diff --git a/modules/field/field.attach.inc b/modules/field/field.attach.inc
index 868d7bd..2b87a21 100644
--- a/modules/field/field.attach.inc
+++ b/modules/field/field.attach.inc
@@ -908,6 +911,7 @@ function field_attach_presave($entity_type, $entity) {
  */
 function field_attach_insert($entity_type, $entity) {
   _field_invoke_default('insert', $entity_type, $entity);
+  field_attach_presave($entity_type, $entity);
   _field_invoke('insert', $entity_type, $entity);
 
   list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
@@ -955,6 +959,7 @@ function field_attach_insert($entity_type, $entity) {
  *   The entity with fields to save.
  */
 function field_attach_update($entity_type, $entity) {
+  field_attach_presave($entity_type, $entity);
   _field_invoke('update', $entity_type, $entity);
 
   list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
diff --git a/modules/node/node.module b/modules/node/node.module
index d86c74d..e033a6e 100644
--- a/modules/node/node.module
+++ b/modules/node/node.module
@@ -1036,7 +1036,6 @@ function node_save($node) {
       $node->original = entity_load_unchanged('node', $node->nid);
     }
 
-    field_attach_presave('node', $node);
     global $user;
 
     // Determine if we will be inserting a new node.
diff --git a/modules/taxonomy/taxonomy.module b/modules/taxonomy/taxonomy.module
index 5f00656..65f4578 100644
--- a/modules/taxonomy/taxonomy.module
+++ b/modules/taxonomy/taxonomy.module
@@ -631,7 +631,6 @@ function taxonomy_term_save($term) {
     $term->original = entity_load_unchanged('taxonomy_term', $term->tid);
   }
 
-  field_attach_presave('taxonomy_term', $term);
   module_invoke_all('taxonomy_term_presave', $term);
   module_invoke_all('entity_presave', $term, 'taxonomy_term');
 
diff --git a/modules/user/user.module b/modules/user/user.module
index 622fe4d..0d50d5c 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -467,7 +467,6 @@ function user_save($account, $edit = array(), $category = 'account') {
     foreach ($edit as $key => $value) {
       $account->$key = $value;
     }
-    field_attach_presave('user', $account);
     module_invoke_all('entity_presave', $account, 'user');
 
     if (is_object($account) && !$account->is_new) {
