diff --git a/modules/node.module b/modules/node.module
index e9b4847e49f592fd29a55cf90f35f90699f84c5f..0fcac4f6a4056ee59630d015f39fe706cf03cedf 100644
--- a/modules/node.module
+++ b/modules/node.module
@@ -425,8 +425,11 @@ function node_save(&$node) {
     }
   }
 
+  // If node has never changed, set $node->changed to $node->created
+  // If we set $node->created to time(), then 'changed' and 'created' will be
+  // different for new nodes which were previewed before submission
   // The changed timestamp is always updated for bookkeeping purposes (revisions, searching, ...)
-  $node->changed = time();
+  $node->changed = $node->changed ? time() : $node->created;
 
   // Split off revisions data to another structure
   $revisions_table_values = array('nid' => $node->nid, 'vid' => $node->vid,
diff --git a/modules/node/node.module b/modules/node/node.module
index e9b4847e49f592fd29a55cf90f35f90699f84c5f..0fcac4f6a4056ee59630d015f39fe706cf03cedf 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -425,8 +425,11 @@ function node_save(&$node) {
     }
   }
 
+  // If node has never changed, set $node->changed to $node->created
+  // If we set $node->created to time(), then 'changed' and 'created' will be
+  // different for new nodes which were previewed before submission
   // The changed timestamp is always updated for bookkeeping purposes (revisions, searching, ...)
-  $node->changed = time();
+  $node->changed = $node->changed ? time() : $node->created;
 
   // Split off revisions data to another structure
   $revisions_table_values = array('nid' => $node->nid, 'vid' => $node->vid,