diff --git modules/file/file.module modules/file/file.module
index 51c7b84..a0e309e 100644
--- modules/file/file.module
+++ modules/file/file.module
@@ -161,7 +161,7 @@ function file_file_download($uri, $field_type = 'file') {
     foreach ($field_references as $entity_type => $type_references) {
       foreach ($type_references as $id => $reference) {
         // Try to load $entity and $field.
-        $entity = reset(entity_load($entity_type, array($id)));
+        $entity = reset(entity_load($entity_type, array($reference->nid)));
         $field = NULL;
         if ($entity) {
           // Load all fields for that entity.
diff --git modules/file/tests/file.test modules/file/tests/file.test
index 18a914c..f03306e 100644
--- modules/file/tests/file.test
+++ modules/file/tests/file.test
@@ -16,6 +16,14 @@ class FileFieldTestCase extends DrupalWebTestCase {
     parent::setUp('file', 'file_module_test');
     $this->admin_user = $this->drupalCreateUser(array('access content', 'access administration pages', 'administer site configuration', 'administer users', 'administer permissions', 'administer content types', 'administer nodes', 'bypass node access'));
     $this->drupalLogin($this->admin_user);
+
+    // Creates a node with revisions so that nid and vid do not match, this is
+    // more representative of real sites.
+    $node = $this->drupalCreateNode();
+    $settings = get_object_vars($node);
+    $settings['revision'] = 1;
+    // Create revision with random title and body and update variables.
+    $this->drupalCreateNode($settings);
   }
 
   /**
