diff --git modules/node/node.pages.inc modules/node/node.pages.inc
index c5a8307..285dd58 100644
--- modules/node/node.pages.inc
+++ modules/node/node.pages.inc
@@ -315,6 +315,9 @@ function node_form_build_preview($form, &$form_state) {
  */
 function node_preview($node) {
   if (node_access('create', $node) || node_access('update', $node)) {
+    // Previewing alters $node so it needs to be cloned.
+    $node = clone $node;
+
     _field_invoke_multiple('load', 'node', array($node->nid => $node));
     // Load the user's name when needed.
     if (isset($node->name)) {
@@ -339,11 +342,9 @@ function node_preview($node) {
     field_attach_prepare_view('node', $nodes, 'full');
 
     // Display a preview of the node.
-    // Previewing alters $node so it needs to be cloned.
     if (!form_get_errors()) {
-      $cloned_node = clone $node;
-      $cloned_node->in_preview = TRUE;
-      $output = theme('node_preview', array('node' => $cloned_node));
+      $node->in_preview = TRUE;
+      $output = theme('node_preview', array('node' => $node));
     }
     drupal_set_title(t('Preview'), PASS_THROUGH);
 
diff --git modules/node/node.test modules/node/node.test
index 0e9e008..42722e5 100644
--- modules/node/node.test
+++ modules/node/node.test
@@ -387,6 +387,16 @@ class PagePreviewTestCase extends DrupalWebTestCase {
   }
 
   /**
+   * Create a node, preview it, and make sure the node is unchanged.
+   */
+  function testPagePreviewNodeEqual() {
+    $node = $this->drupalCreateNode();
+    $before = clone $node;
+    node_preview($node);
+    $this->assertTrue($node == $before, 'Node unchanged by preview.');
+   }  
+
+  /**
    * Check the node preview functionality, when using revisions.
    */
   function testPagePreviewWithRevisions() {
