diff --git a/core/modules/field/field.attach.inc b/core/modules/field/field.attach.inc
index 9291725..c5f264e 100644
--- a/core/modules/field/field.attach.inc
+++ b/core/modules/field/field.attach.inc
@@ -1159,6 +1159,8 @@ function field_attach_prepare_view($entity_type, $entities, $view_mode, $langcod
  *   The type of $entity; e.g. 'node' or 'user'.
  * @param $entity
  *   The entity with fields to render.
+ *   The entity should have an $entity->in_preview property set to TRUE when
+ *   the entity is being displayed as part of a form preview.
  * @param $view_mode
  *   View mode, e.g. 'full', 'teaser'...
  * @param $langcode
@@ -1168,6 +1170,21 @@ function field_attach_prepare_view($entity_type, $entities, $view_mode, $langcod
  *   A renderable array for the field values.
  */
 function field_attach_view($entity_type, $entity, $view_mode, $langcode = NULL) {
+  // In order to be equivalent to regular values loaded from field storage,
+  // values coming from a form preview need to run through hook_field_load()
+  // and hook_field_attach_load().
+  if (!empty($entity->in_preview)) {
+    list($id) = entity_extract_ids($entity_type, $entity);
+    $entities = array($id => $entity);
+    $age = FIELD_LOAD_REVISION;
+    _field_invoke_multiple('load', $entity_type, $entities, $age);
+
+    foreach (module_implements('field_attach_load') as $module) {
+      $function = $module . '_field_attach_load';
+      $function($entity_type, $entities, $age);
+    }
+  }
+
   // Determine the actual language to display for each field, given the
   // languages available in the field data.
   $display_language = field_language($entity_type, $entity, NULL, $langcode);
diff --git a/core/modules/node/node.pages.inc b/core/modules/node/node.pages.inc
index cd1eb6d..e78960f 100644
--- a/core/modules/node/node.pages.inc
+++ b/core/modules/node/node.pages.inc
@@ -384,7 +384,6 @@ function node_form_build_preview($form, &$form_state) {
  */
 function node_preview($node) {
   if (node_access('create', $node) || node_access('update', $node)) {
-    _field_invoke_multiple('load', 'node', array($node->nid => $node));
     // Load the user's name when needed.
     if (isset($node->name)) {
       // The use of isset() is mandatory in the context of user IDs, because
