diff --git modules/user/user.module modules/user/user.module
index 2efc485..0de0535 100644
--- modules/user/user.module
+++ modules/user/user.module
@@ -360,15 +360,8 @@ function user_save($account, $edit = array(), $category = 'account') {
       unset($edit['pass']);
     }
 
-    // Get the fields form so we can recognize the fields in the $edit
-    // form that should not go into the serialized data array.
-    $field_form = array();
-    $field_form_state = form_state_defaults();
-    $edit = (object) $edit;
-    field_attach_form('user', $edit, $field_form, $field_form_state);
-
     // Presave fields.
-    field_attach_presave('user', $edit);
+    field_attach_presave('user', (object) $edit);
 
     $edit = (array) $edit;
 
@@ -511,11 +504,11 @@ function user_save($account, $edit = array(), $category = 'account') {
         return FALSE;
       }
 
-      // Build the initial user object.
-      $user = user_load($edit['uid'], TRUE);
+      // Build a stub user object.
+      $user = (object) $edit;
+      $user->roles[DRUPAL_AUTHENTICATED_RID] = 'authenticated user';
 
-      $entity = (object) $edit;
-      field_attach_insert('user', $entity);
+      field_attach_insert('user', $user);
 
       user_module_invoke('insert', $edit, $user, $category);
       entity_invoke('insert', 'user', $user);
