diff --git a/core/modules/field/field.install b/core/modules/field/field.install
index dc20e25..24b2950 100644
--- a/core/modules/field/field.install
+++ b/core/modules/field/field.install
@@ -537,4 +537,3 @@ function field_update_8004() {
  * @} End of "addtogroup updates-7.x-to-8.x".
  * The next series of updates should start at 9000.
  */
-
diff --git a/core/modules/file/file.install b/core/modules/file/file.install
index 3ca855e..2327bb3 100644
--- a/core/modules/file/file.install
+++ b/core/modules/file/file.install
@@ -259,32 +259,3 @@ function file_update_8001() {
   );
   db_change_field('file_usage', 'id', 'id', $spec);
 }
-
-/**
-* Convert image field's default image configuration to the new format.
-*/
-function file_update_8002() {
-  if (module_exists('field_sql_storage')) {
-    $fields = field_read_fields(array('type' => 'image'), array('include_deleted' => TRUE, 'include_inactive' => TRUE));
-    foreach ($fields as $field) {
-      if (!empty($field['settings']['default_image'])) {
-        $field['settings']['default_image'] = array($field['settings']['default_image']);
-      }
-      else {
-        $field['settings']['default_image'] = array();
-      }
-      field_update_field($field);
-
-      $instances = field_read_instances(array('field_name' => $field['field_name']));
-      foreach ($instances as $instance) {
-        if (!empty($instance['settings']['default_image'])) {
-          $instance['settings']['default_image'] = array($instance['settings']['default_image']);
-        }
-        else {
-          $instance['settings']['default_image'] = array();
-        }
-        field_update_instance($instance);
-      }
-    }
-  }
-}
diff --git a/core/modules/file/file.module b/core/modules/file/file.module
index 18dae26..dfccd33 100644
--- a/core/modules/file/file.module
+++ b/core/modules/file/file.module
@@ -1135,7 +1135,11 @@ function file_managed_file_submit($form, &$form_state) {
       $fids = array_diff($fids, $remove_fids);
     }
     else {
+      // If we deal with single upload element remove the file and set
+      // element's value to empty array (file could not be removed from
+      // element if we don't do that).
       $remove_fids = $fids;
+      $fids = array();
     }
 
     foreach ($remove_fids as $fid) {
diff --git a/core/modules/image/image.install b/core/modules/image/image.install
index 8a05660..ea20840 100644
--- a/core/modules/image/image.install
+++ b/core/modules/image/image.install
@@ -138,6 +138,18 @@ function _image_update_get_style_with_effects(array $style) {
 }
 
 /**
+ * Implements hook_update_dependencies().
+ */
+function image_update_dependencies() {
+  // Convert the format of the 'default_image' setting after fields and
+  // instances have been moved to the config system.
+  $dependencies['image'][8003] = array(
+    'field' => 8003,
+  );
+  return $dependencies;
+}
+
+/**
  * Convert existing image styles to the new config system.
  */
 function image_update_8000() {
@@ -176,3 +188,48 @@ function image_update_8002() {
     'image_style_preview_image' => 'preview_image',
   ));
 }
+
+
+/**
+ * Convert image field's default image configuration to the new format.
+ */
+function image_update_8003() {
+  foreach (config_get_storage_names_with_prefix('field.field.') as $config_name) {
+    $field_config = config($config_name);
+    if ($field_config->get('type') == 'image') {
+      $settings = $field_config->get('settings');
+
+      // Some update hooks (like user_update_8011()) create image fields with
+      // the 'default_image' setting directly in the correct format. We do not
+      // need to update those.
+      if (!is_array($settings['default_image'])) {
+        if (!empty($settings['default_image'])) {
+          $settings['default_image'] = array($settings['default_image']);
+        }
+        else {
+          $settings['default_image'] = array();
+        }
+        $field_config->set('settings', $settings);
+        $field_config->save();
+      }
+
+    }
+  }
+
+  foreach (config_get_storage_names_with_prefix('field.instance.') as $config_name) {
+    $instance_config = config($config_name);
+    if ($instance_config->get('field_type') == 'image') {
+      $settings = $instance_config->get('settings');
+      if (!is_array($settings['default_image'])) {
+        if (!empty($settings['default_image'])) {
+          $settings['default_image'] = array($settings['default_image']);
+        }
+        else {
+          $settings['default_image'] = array();
+        }
+        $instance_config->set('settings', $settings);
+        $instance_config->save();
+      }
+    }
+  }
+}
diff --git a/core/modules/user/user.install b/core/modules/user/user.install
index 4f22958..0736a2c 100644
--- a/core/modules/user/user.install
+++ b/core/modules/user/user.install
@@ -658,7 +658,7 @@ function user_update_8011() {
   if (!module_exists('image')) {
     // Install image.module with schema version 8002 as a previous version
     // would have to create tables that would be removed again.
-    $old_schema = update_module_enable(array('image'), 8002);
+    $old_schema = update_module_enable(array('image'), 8003);
     if ($old_schema['image'] == SCHEMA_UNINSTALLED) {
       // If image.module was not installed before, install default
       // configuration and run the install hook.
@@ -732,7 +732,7 @@ function user_update_8011() {
       'title_field' => 0,
       'max_resolution' => update_variable_get('user_picture_dimensions', '85x85'),
       'min_resolution' => '',
-      'default_image' => !empty($default_image_fid) ? $default_image_fid : 0,
+      'default_image' => !empty($default_image_fid) ? array($default_image_fid) : array(),
     ),
   );
   _update_7000_field_create_instance($field, $instance);
