diff --git a/includes/admin.inc b/includes/admin.inc
index 0a7a493..963a8e8 100644
--- a/includes/admin.inc
+++ b/includes/admin.inc
@@ -2464,7 +2464,7 @@ function views_ui_standard_submit($form, &$form_state) {
   // Determine whether the values the user entered are intended to apply to
   // the current display or the default display.
 
-  list($was_defaulted, $is_defaulted) = views_ui_standard_override_values($form, $form_state);
+  list($was_defaulted, $is_defaulted, $revert) = views_ui_standard_override_values($form, $form_state);
 
   // Mark the changed section of the view as changed.
   // TODO: Document why we are doing this, and see if we still need it.
@@ -2474,14 +2474,23 @@ function views_ui_standard_submit($form, &$form_state) {
 
   // Based on the user's choice in the display dropdown, determine which display
   // these changes apply to.
-  if ($was_defaulted === $is_defaulted) {
+  if ($revert) {
+    // If it's revert just change the override and return.
+    $display = $form_state['view']->display[$form_state['display_id']];
+    $display->handler->options_override($form, $form_state);
+
+    // Don't execute the normal submit handling but still store the changed view into cache.
+    views_ui_cache_set($form_state['view']);
+    return;
+  }
+  elseif ($was_defaulted === $is_defaulted) {
     // We're not changing which display these form values apply to.
     // Run the regular submit handler for this form.
   }
   elseif ($was_defaulted && !$is_defaulted) {
     // We were using the default display's values, but we're now overriding
     // the default display and saving values specific to this display.
-    $display = &$form_state['view']->display[$form_state['display_id']];
+    $display = $form_state['view']->display[$form_state['display_id']];
     $display->handler->options_override($form, $form_state);
     $display->handler->options_submit($form, $form_state);
   }
@@ -2490,7 +2499,7 @@ function views_ui_standard_submit($form, &$form_state) {
     // to go back to the default display.
     // Overwrite the default display with the current form values, and make
     // the current display use the new default values.
-    $display = &$form_state['view']->display[$form_state['display_id']];
+    $display = $form_state['view']->display[$form_state['display_id']];
     $display->handler->options_override($form, $form_state);
     $display->handler->options_submit($form, $form_state);
   }
@@ -2502,15 +2511,16 @@ function views_ui_standard_submit($form, &$form_state) {
 }
 
 /**
- * Return the was_defaulted and is_defaulted state of a form.
+ * Return the was_defaulted, is_defaulted and revert state of a form.
  */
 function views_ui_standard_override_values($form, $form_state) {
   // Make sure the dropdown exists in the first place.
   if (isset($form_state['values']['override']['dropdown'])) {
     // #default_value is used to determine whether it was the default value or not.
-    // So the availible options are: $display and 'default', not 'defaults'.
-    $was_defaulted = (bool) ($form['override']['dropdown']['#default_value'] === 'defaults');
-    $is_defaulted = (bool) ($form_state['values']['override']['dropdown'] === 'default');
+    // So the availible options are: $display, 'default' and 'default_revert', not 'defaults'.
+    $was_defaulted = ($form['override']['dropdown']['#default_value'] === 'defaults');
+    $is_defaulted = ($form_state['values']['override']['dropdown'] === 'default');
+    $revert = ($form_state['values']['override']['dropdown'] === 'default_revert');
 
     if ($was_defaulted !== $is_defaulted && isset($form['#section'])) {
       // We're changing which display these values apply to.
@@ -2522,9 +2532,10 @@ function views_ui_standard_override_values($form, $form_state) {
     // The user didn't get the dropdown for overriding the default display.
     $was_defaulted = FALSE;
     $is_defaulted = FALSE;
+    $revert = FALSE;
   }
 
-  return array($was_defaulted, $is_defaulted);
+  return array($was_defaulted, $is_defaulted, $revert);
 }
 
 /**
@@ -2564,6 +2575,7 @@ function views_ui_standard_display_dropdown(&$form, &$form_state, $section) {
 
   // Determine whether any other displays have overrides for this section.
   $section_overrides = FALSE;
+  $section_defaulted = $current_display->handler->is_defaulted($section);
   foreach ($displays as $id => $display) {
     if ($id === 'default' || $id === $display_id) {
       continue;
@@ -2575,6 +2587,10 @@ function views_ui_standard_display_dropdown(&$form, &$form_state, $section) {
 
   $display_dropdown['default'] = ($section_overrides ? t('All displays (except overridden)') : t('All displays'));
   $display_dropdown[$display_id] = t('This @display_type (override)', array('@display_type' => $current_display->display_plugin));
+  // Only display the revert option if we are in a overridden section.
+  if (!$section_defaulted) {
+    $display_dropdown['default_revert'] = t('Revert to default');
+  }
 
   $form['override'] = array(
     '#prefix' => '<div class="views-override clearfix container-inline">',
diff --git a/js/views-admin.js b/js/views-admin.js
index 321f612..3b7489a 100644
--- a/js/views-admin.js
+++ b/js/views-admin.js
@@ -861,6 +861,9 @@ Drupal.behaviors.viewsUiOverrideSelect.attach = function (context, settings) {
       if ($(this).val() == 'default') {
         $submit.val(Drupal.t('Apply (all displays)'));
       }
+      else if ($(this).val() == 'default_revert') {
+        $submit.val(Drupal.t('Revert to default'));
+      }
       else {
         $submit.val(Drupal.t('Apply (this display)'));
       }
diff --git a/tests/views_ui.test b/tests/views_ui.test
index 5b6d2e7..ab3a779 100644
--- a/tests/views_ui.test
+++ b/tests/views_ui.test
@@ -904,4 +904,31 @@ class ViewsUIWizardOverrideDisplaysTestCase extends ViewsUIWizardHelper {
     $this->assertText($new_block_title);
     $this->assertNoText($view['block[title]']);
   }
+
+  /**
+   * Tests that the revert to all displays select-option works as expected.
+   */
+  function testRevertAllDisplays() {
+    // Create a basic view with a page, block.
+    // Because there is both a title on page and block we expect the title on
+    // the block be overriden.
+    $view['human_name'] = $this->randomName(16);
+    $view['name'] = strtolower($this->randomName(16));
+    $view['page[create]'] = 1;
+    $view['page[title]'] = $this->randomName(16);
+    $view['page[path]'] = $this->randomName(16);
+    $view['block[create]'] = 1;
+    $view['block[title]'] = $this->randomName(16);
+    $this->drupalPost('admin/structure/views/add', $view, t('Continue & edit'));
+
+    // Revert the title of the block back to the default ones, but submit some
+    // new values to be sure that the new value is not stored.
+    $edit = array();
+    $edit['title'] = $new_block_title = $this->randomName();
+    $edit['override[dropdown]'] = 'default_revert';
+
+    $this->drupalPost("admin/structure/views/nojs/display/{$view['name']}/block/title", $edit, t('Apply'));
+    $this->drupalPost("admin/structure/views/view/{$view['name']}/edit/block", array(), t('Save'));
+    $this->assertText($view['page[title]']);
+  }
 }
