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.field.inc b/core/modules/image/image.field.inc
index a287620..eed43df 100644
--- a/core/modules/image/image.field.inc
+++ b/core/modules/image/image.field.inc
@@ -18,7 +18,7 @@ function image_field_info() {
       'description' => t('This field stores the ID of an image file as an integer value.'),
       'settings' => array(
         'uri_scheme' => file_default_scheme(),
-        'default_image' => array(),
+        'default_image' => 0,
         'column_groups' => array(
           'file' => array(
             'label' => t('File'),
@@ -44,7 +44,7 @@ function image_field_info() {
         'title_field_required' => 0,
         'max_resolution' => '',
         'min_resolution' => '',
-        'default_image' => array(),
+        'default_image' => 0,
       ),
       'default_widget' => 'image_image',
       'default_formatter' => 'image',
@@ -79,7 +79,7 @@ function image_field_settings_form($field, $instance) {
     '#title' => t('Default image'),
     '#type' => 'managed_file',
     '#description' => t('If no image is uploaded, this image will be shown on display.'),
-    '#default_value' => $field['settings']['default_image'],
+    '#default_value' => empty($field['settings']['default_image']) ? array() : array($field['settings']['default_image']),
     '#upload_location' => $settings['uri_scheme'] . '://default_images/',
   );
 
@@ -197,7 +197,7 @@ function image_field_instance_settings_form($field, $instance) {
     '#title' => t('Default image'),
     '#type' => 'managed_file',
     '#description' => t("If no image is uploaded, this image will be shown on display and will override the field's default image."),
-    '#default_value' => $settings['default_image'],
+    '#default_value' => empty($settings['default_image']) ? array() : array($settings['default_image']),
     '#upload_location' => $field['settings']['uri_scheme'] . '://default_images/',
   );
 
@@ -234,11 +234,11 @@ function image_field_prepare_view($entity_type, $entities, $field, $instances, $
       $fid = array();
       // Use the default for the instance if one is available.
       if (!empty($instances[$id]['settings']['default_image'])) {
-        $fid = $instances[$id]['settings']['default_image'];
+        $fid = array($instances[$id]['settings']['default_image']);
       }
       // Otherwise, use the default for the field.
       elseif (!empty($field['settings']['default_image'])) {
-        $fid = $field['settings']['default_image'];
+        $fid = array($field['settings']['default_image']);
       }
 
       // Add the default image if one is found.
diff --git a/core/modules/image/image.module b/core/modules/image/image.module
index a7696a6..a13bbc6 100644
--- a/core/modules/image/image.module
+++ b/core/modules/image/image.module
@@ -1030,3 +1030,23 @@ function image_filter_keyword($value, $current_pixels, $new_pixels) {
 function _image_effect_definitions_sort($a, $b) {
   return strcasecmp($a['name'], $b['name']);
 }
+
+/**
+ * Implements hook_entity_presave().
+ *
+ * Transforms default image of image field from array into single value at save.
+ */
+function image_entity_presave(Drupal\Core\Entity\EntityInterface $entity, $type) {
+  $instance = $type == 'field_instance';
+  $instance &= !empty($entity->field_name) && config('field.field.' . $entity->field_name)->get('type') == 'image';
+  $field = $type == 'field_entity' && $entity->type == 'image';
+
+  if ($instance || $field) {
+    if (is_array($entity->settings['default_image']) && !empty($entity->settings['default_image'][0])) {
+      $entity->settings['default_image'] = $entity->settings['default_image'][0];
+    }
+    else {
+      $entity->settings['default_image'] = 0;
+    }
+  }
+}
diff --git a/core/modules/image/lib/Drupal/image/Tests/ImageFieldDefaultImagesTest.php b/core/modules/image/lib/Drupal/image/Tests/ImageFieldDefaultImagesTest.php
index 40e380d..78a957f 100644
--- a/core/modules/image/lib/Drupal/image/Tests/ImageFieldDefaultImagesTest.php
+++ b/core/modules/image/lib/Drupal/image/Tests/ImageFieldDefaultImagesTest.php
@@ -43,10 +43,10 @@ function testDefaultImages() {
     // Create an image field and add an instance to the article content type.
     $field_name = strtolower($this->randomName());
     $field_settings = array(
-      'default_image' => array($default_images['field']->fid),
+      'default_image' => $default_images['field']->fid,
     );
     $instance_settings = array(
-      'default_image' => array($default_images['instance']->fid),
+      'default_image' => $default_images['instance']->fid,
     );
     $widget_settings = array(
       'preview_image_style' => 'medium',
@@ -63,7 +63,7 @@ function testDefaultImages() {
       'label' => $instance['label'],
       'required' => $instance['required'],
       'settings' => array(
-        'default_image' => array($default_images['instance2']->fid),
+        'default_image' => $default_images['instance2']->fid,
       ),
     );
     field_create_instance($instance2);
@@ -179,7 +179,7 @@ function testDefaultImages() {
     );
 
     // Upload a new default for the article's field instance.
-    $instance['settings']['default_image'] = array($default_images['instance_new']->fid);
+    $instance['settings']['default_image'] = $default_images['instance_new']->fid;
     field_update_instance($instance);
 
     // Confirm the new field instance default is used on the article field
@@ -218,7 +218,7 @@ function testDefaultImages() {
     );
 
     // Remove the instance default from articles.
-    $instance['settings']['default_image'] = NULL;
+    $instance['settings']['default_image'] = 0;
     field_update_instance($instance);
 
     // Confirm the article field instance default has been removed.
diff --git a/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php b/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php
index c30c686..f941953 100644
--- a/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php
+++ b/core/modules/image/lib/Drupal/image/Tests/ImageFieldDisplayTest.php
@@ -230,7 +230,7 @@ function testImageFieldDefaultImage() {
     // Clear field info cache so the new default image is detected.
     field_info_cache_clear();
     $field = field_info_field($field_name);
-    $image = file_load($field['settings']['default_image'][0]);
+    $image = file_load($field['settings']['default_image']);
     $this->assertTrue($image->status == FILE_STATUS_PERMANENT, 'The default image status is permanent.');
     $default_output = theme('image', array('uri' => $image->uri));
     $this->drupalGet('node/' . $node->nid);
@@ -272,7 +272,7 @@ function testImageFieldDefaultImage() {
     field_info_cache_clear();
 
     $private_field = field_info_field($private_field_name);
-    $image = file_load($private_field['settings']['default_image'][0]);
+    $image = file_load($private_field['settings']['default_image']);
     $this->assertEqual('private', file_uri_scheme($image->uri), 'Default image uses private:// scheme.');
     $this->assertTrue($image->status == FILE_STATUS_PERMANENT, 'The default image status is permanent.');
     // Create a new node with no image attached and ensure that default private
diff --git a/core/modules/user/user.install b/core/modules/user/user.install
index 4f22958..bb01a8f 100644
--- a/core/modules/user/user.install
+++ b/core/modules/user/user.install
@@ -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);
