diff --git a/core/modules/image/image.field.inc b/core/modules/image/image.field.inc
index aef6be7..389a90c 100644
--- a/core/modules/image/image.field.inc
+++ b/core/modules/image/image.field.inc
@@ -25,6 +25,7 @@ function image_field_info() {
         'title_field' => 0,
         'max_resolution' => '',
         'min_resolution' => '',
+        'default_image' => 0,
       ),
       'default_widget' => 'image_image',
       'default_formatter' => 'image',
@@ -152,6 +153,15 @@ function image_field_instance_settings_form($field, $instance) {
     '#weight' => 11,
   );
 
+  // Add default image to instance
+  $form['default_image'] = array(
+    '#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'],
+    '#upload_location' => $field['settings']['uri_scheme'] . '://default_images/',
+  );
+
   return $form;
 }
 
@@ -191,8 +201,16 @@ function image_field_load($entity_type, $entities, $field, $instances, $langcode
 function image_field_prepare_view($entity_type, $entities, $field, $instances, $langcode, &$items) {
   // If there are no files specified at all, use the default.
   foreach ($entities as $id => $entity) {
-    if (empty($items[$id]) && $field['settings']['default_image']) {
-      if ($file = file_load($field['settings']['default_image'])) {
+    if (empty($items[$id])) {
+      $fid = 0;
+      if ($instances[$id]['settings']['default_image']) {
+        $fid = $instances[$id]['settings']['default_image'];
+      }
+      elseif ($field['settings']['default_image']) {
+        $fid = $field['settings']['default_image'];
+      }
+
+      if ($fid && ($file = file_load($fid))) {
         $items[$id][0] = (array) $file + array(
           'is_default' => TRUE,
           'alt' => '',
diff --git a/core/modules/image/image.module b/core/modules/image/image.module
index a0816e4..9d8dc87 100644
--- a/core/modules/image/image.module
+++ b/core/modules/image/image.module
@@ -411,6 +411,62 @@ function image_field_update_field($field, $prior_field, $has_data) {
   }
 }
 
+ /**
+ * Implements hook_field_delete_instance().
+ */
+function image_field_delete_instance($instance) {
+  $field = field_read_field($instance['field_name']);
+
+  if ($field['type'] != 'image') {
+    return;
+  }
+
+  // The value of a managed_file element can be an array if #extended == TRUE.
+  $fid = (is_array($instance['settings']['default_image']) ? $instance['settings']['default_image']['fid'] : $instance['settings']['default_image']);
+  if ($fid && ($file = file_load($fid))) {
+    file_usage_delete($file, 'image', 'default_image', $instance['id']);
+  }
+}
+
+/**
+ * Implements hook_field_update_instance().
+ */
+function image_field_update_instance($instance, $prior_instance) {
+  $field = field_read_field($instance['field_name']);
+
+  if ($field['type'] != 'image') {
+    return;
+  }
+
+  // The value of a managed_file element can be an array if #extended == TRUE.
+  $fid_new = (is_array($instance['settings']['default_image']) ? $instance['settings']['default_image']['fid'] : $instance['settings']['default_image']);
+  $fid_old = (is_array($prior_instance['settings']['default_image']) ? $prior_instance['settings']['default_image']['fid'] : $prior_instance['settings']['default_image']);
+
+  $file_new = $fid_new ? file_load($fid_new) : FALSE;
+
+  if ($fid_new != $fid_old) {
+
+    // Is there a new file?
+    if ($file_new) {
+      $file_new->status = FILE_STATUS_PERMANENT;
+      file_save($file_new);
+      file_usage_add($file_new, 'image', 'default_image', $instance['id']);
+    }
+
+    // Is there an old file?
+    if ($fid_old && ($file_old = file_load($fid_old))) {
+      file_usage_delete($file_old, 'image', 'default_image', $instance['id']);
+    }
+  }
+
+  // If the upload destination changed, then move the file.
+  if ($file_new && (file_uri_scheme($file_new->uri) != $field['settings']['uri_scheme'])) {
+    $directory = $field['settings']['uri_scheme'] . '://default_images/';
+    file_prepare_directory($directory, FILE_CREATE_DIRECTORY);
+    file_move($file_new, $directory . $file_new->filename);
+  }
+}
+
 /**
  * Clear cached versions of a specific file in all styles.
  *
diff --git a/core/modules/image/image.test b/core/modules/image/image.test
index 2c422a7..018488b 100644
--- a/core/modules/image/image.test
+++ b/core/modules/image/image.test
@@ -530,7 +530,8 @@ class ImageAdminStylesUnitTest extends ImageFieldTestCase {
 
     // Create an image field that uses the new style.
     $field_name = strtolower($this->randomName(10));
-    $instance = $this->createImageField($field_name, 'article');
+    $this->createImageField($field_name, 'article');
+    $instance = field_info_instance('node', $field_name, 'article');
     $instance['display']['default']['type'] = 'image';
     $instance['display']['default']['settings']['image_style'] = $style_name;
     field_update_instance($instance);
@@ -1241,3 +1242,138 @@ class ImageDimensionsScaleTestCase extends DrupalUnitTestCase {
     }
   }
 }
+
+/**
+ * Tests default image settings
+ */
+class ImageFieldDefaultImagesTestCase extends ImageFieldTestCase {
+  public static function getInfo() {
+    return array(
+      'name' => 'Image field default images tests',
+      'description' => 'Tests setting up default images both to the field and field instance.',
+      'group' => 'Image',
+    );
+  }
+
+  function setUp() {
+    parent::setUp(array('field_ui'));
+  }
+
+  /**
+   * Tests CRUD for fields and fields instances with default images.
+   */
+  function testDefaultImages() {
+    // first, create files for defaults
+    $files = $this->drupalGetTestFiles('image');
+    $default_images = array();
+    foreach (array('field', 'instance', 'instance2', 'field_new', 'instance_new') as $image_target) {
+      $file = array_pop($files);
+      $file = file_save($file);
+      $default_images[$image_target] = $file;
+    }
+
+    // second, create field and field instance in article
+    $field_name = strtolower($this->randomName());
+    $field_settings = array(
+      'default_image' => $default_images['field']->fid,
+    );
+    $instance_settings = array(
+      'default_image' => $default_images['instance']->fid,
+    );
+    $widget_settings = array(
+      'preview_image_style' => 'medium',
+    );
+    $this->createImageField($field_name, 'article', $field_settings, $instance_settings, $widget_settings);
+    $field = field_info_field($field_name);
+    $instance = field_info_instance('node', $field_name, 'article');
+
+    // second, create another field instance with another default_image in pages
+    $instance2 = array_merge($instance, array(
+      'bundle' => 'page',
+      'settings' => array(
+        'default_image' => $default_images['instance2']->fid,
+      ),
+    ));
+    field_create_instance($instance2);
+    $instance2 = field_info_instance('node', $field_name, 'page');
+
+
+
+
+    // Field Instances Admin Forms:
+    
+    // look at article field instance admin form and assert for field default and instance default image (should be different)
+    $this->drupalGet("admin/structure/types/manage/article/fields/$field_name");
+    // Ensure field default is correct
+    $this->assertFieldByXpath('//input[@name="field[settings][default_image][fid]"]', $default_images['field']->fid, t('Article image field default equals expected FID of @fid.', array('@fid' => $default_images['field']->fid)));
+    // Ensure article field instance default is correct
+    $this->assertFieldByXpath('//input[@name="instance[settings][default_image][fid]"]', $default_images['instance']->fid, t('Article image field instance default equals expected FID of @fid.', array('@fid' => $default_images['instance']->fid)));
+    
+    // do the same with page field instance admin form (but field default from article should be equal to field default from page form, all other image defaults should be different)
+    // look at page field instance admin form and assert for field default and instance default image (should be different)
+    $this->drupalGet("admin/structure/types/manage/page/fields/$field_name");
+    // Ensure field default is correct
+    $this->assertFieldByXpath('//input[@name="field[settings][default_image][fid]"]', $default_images['field']->fid, t('Page image field default equals expected FID of @fid.', array('@fid' => $default_images['field']->fid)));
+    // Ensure page field instance default is correct
+    $this->assertFieldByXpath('//input[@name="instance[settings][default_image][fid]"]', $default_images['instance2']->fid, t('Page image field instance default equals expected FID of @fid.', array('@fid' => $default_images['instance2']->fid)));
+
+
+    
+    // Content Look and Feel:
+
+    // Create article without image (should be default of article field instance)
+    $article = $this->drupalCreateNode(array('type' => 'article')); 
+    $article_built = node_view($article);
+    $this->assertEqual($article_built[$field_name]['#items'][0]['fid'], $default_images['instance']->fid, t('New article node without image has expected default image FID of @fid.', array('@fid' => $default_images['instance']->fid)));
+    
+    // Create page without image (should be default of page field instance)
+    $page = $this->drupalCreateNode(array('type' => 'page'));
+    $page_built = node_view($page);
+    $this->assertEqual($page_built[$field_name]['#items'][0]['fid'], $default_images['instance2']->fid, t('New page node without image has expected default image FID of @fid.', array('@fid' => $default_images['instance2']->fid)));
+
+    // Upload new default for field
+    $field['settings']['default_image'] = $default_images['field_new']->fid;
+    field_update_field($field);
+    
+    // Confirm new field default appears on article field admin form 
+    $this->drupalGet("admin/structure/types/manage/article/fields/$field_name");
+    $this->assertFieldByXpath('//input[@name="field[settings][default_image][fid]"]', $default_images['field_new']->fid, t('Updated image field default equals expected FID of @fid.', array('@fid' => $default_images['field_new']->fid)));
+
+    // Reload article and page & ensure images are the field instance defaults (not the new field default)
+    $article_built = node_view($article = node_load($article->nid, NULL, $reset = TRUE));
+    $page_built = node_view($page = node_load($page->nid, NULL, $reset = TRUE));
+    $this->assertEqual($article_built[$field_name]['#items'][0]['fid'], $default_images['instance']->fid, t('Previously created article node without image has expected default image FID of @fid.', array('@fid' => $default_images['instance']->fid)));
+    $this->assertEqual($page_built[$field_name]['#items'][0]['fid'], $default_images['instance2']->fid, t('Previously created page node without image has expected default image FID of @fid.', array('@fid' => $default_images['instance2']->fid)));
+    
+    // Upload new default for articles instance
+    $instance['settings']['default_image'] = $default_images['instance_new']->fid;
+    field_update_instance($instance);
+    // field_info_cache_clear();
+
+    // Confirm new article field instance default appears on article field admin form
+    $this->drupalGet("admin/structure/types/manage/article/fields/$field_name");
+    $this->assertFieldByXpath('//input[@name="instance[settings][default_image][fid]"]', $default_images['instance_new']->fid, t('Updated article image field instance default equals expected FID of @fid.', array('@fid' => $default_images['instance_new']->fid)));
+
+    // Reload article and page (should be new instance default on created article, created page default should remain unchanged)
+    $article_built = node_view($article = node_load($article->nid, NULL, $reset = TRUE));
+    $page_built = node_view($page = node_load($page->nid, NULL, $reset = TRUE));
+    
+    $this->assertEqual($article_built[$field_name]['#items'][0]['fid'], $default_images['instance_new']->fid, t('Previously created article node without image has expected default image FID of @fid.', array('@fid' => $default_images['instance_new']->fid)));
+    $this->assertEqual($page_built[$field_name]['#items'][0]['fid'], $default_images['instance2']->fid, t('Previously created page node without image has expected default image FID of @fid.', array('@fid' => $default_images['instance2']->fid)));
+
+    // Remove instance default from article (should be new field default on created article, created page default should remain unchanged)
+    $instance['settings']['default_image'] = NULL;
+    field_update_instance($instance);
+
+    // Confirm new article field instance default appears on article field admin form
+    $this->drupalGet("admin/structure/types/manage/article/fields/$field_name");
+    $this->assertFieldByXpath('//input[@name="instance[settings][default_image][fid]"]', '', t('Updated article image field instance default has been successfully removed.'));
+
+    // Reload article and and page (should  using the new field default
+    $article_built = node_view($article = node_load($article->nid, NULL, $reset = TRUE));
+    $page_built = node_view($page = node_load($page->nid, NULL, $reset = TRUE));
+    
+    $this->assertEqual($article_built[$field_name]['#items'][0]['fid'], $default_images['field_new']->fid, t('Previously created article node without image has expected default image FID of @fid.', array('@fid' => $default_images['field_new']->fid)));
+    $this->assertEqual($page_built[$field_name]['#items'][0]['fid'], $default_images['instance2']->fid, t('Previously created page node without image has expected default image FID of @fid.', array('@fid' => $default_images['instance2']->fid)));
+  }
+}
