diff --git a/modules/node/node.module b/modules/node/node.module
index 0f2d24dbe0eb746ef72da76f544c252b4656386b..2d008daba00f528dcb549301a2c08fec08a1acfe 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -1809,7 +1809,7 @@ function node_validate($node, $form = array()) {
     form_set_error('body', t('The body of your @type is too short. You need at least %words words.', array('%words' => $type->min_word_count, '@type' => $type->name)));
   }
 
-  if (isset($node->nid) && (node_last_changed($node->nid) > $_POST['changed'])) {
+  if (isset($node->nid) && (node_last_changed($node->nid) > $node->changed)) {
     form_set_error('changed', t('This content has been modified by another user, changes cannot be saved.'));
   }
 
@@ -1873,7 +1873,7 @@ function node_form($node, $form_values = NULL) {
   }
 
   // Changed must be sent to the client, for later overwrite error checking.
-  $form['changed'] = array('#type' => 'hidden', '#value' => $node->changed);
+  $form['changed'] = array('#type' => 'hidden', '#default_value' => $node->changed);
 
   // Get the node-specific bits.
   $form = array_merge_recursive($form, node_invoke($node, 'form', $form_values));