diff --git a/resources/node_resource.inc b/resources/node_resource.inc
index 4bf5538..77801e3 100644
--- a/resources/node_resource.inc
+++ b/resources/node_resource.inc
@@ -417,6 +417,12 @@ function _node_resource_update($nid, $node) {
   $stub_form = drupal_get_form($node_type . '_node_form', (object) $old_node);
   $form_state['triggering_element'] = $stub_form['actions']['submit'];
 
+  foreach($form_state['values'] as $key => $value) {
+    if(array_key_exists($key,$old_node)) {
+      $old_node->{$key} = $value;
+    }
+  }
+
   drupal_form_submit($node_type . '_node_form', $form_state, $old_node);
 
   if ($errors = form_get_errors()) {
diff --git a/resources/user_resource.inc b/resources/user_resource.inc
index d1f7dfa..bf40fc3 100644
--- a/resources/user_resource.inc
+++ b/resources/user_resource.inc
@@ -391,6 +391,13 @@ function _user_resource_update($uid, $account) {
   foreach ($account as $key => $value) {
     if ($key != 'pass' && $key != 'roles') {
       $form_state['values'][$key] = $value;
+      // Force assignment of new file IDs if they are coming in request.
+      // This is a terribly hacky way of fixing the issue, however it hasn't
+      // been fixed in a normal way since 2011!
+      // See https://www.drupal.org/node/1433254
+      if (property_exists($account_loaded, $key) && is_array($value) && isset($value['und'][0]['fid'])) {
+          $account_loaded->{$key} = $value;
+      }
     }
   }
 
