diff --git a/css/views-admin.theme.css b/css/views-admin.theme.css
index df45cdf..457931a 100644
--- a/css/views-admin.theme.css
+++ b/css/views-admin.theme.css
@@ -448,6 +448,15 @@ td.group-title {
   padding: 3px 7px;
 }
 
+/**
+ * Display a red background if the display doesn't validate.
+ */
+.views-displays .secondary a.error {
+  background-color: #ed541d;
+  color: #f1f1f1;
+}
+
+
 .views-displays .secondary a:focus {
   outline: none;
 }
diff --git a/includes/admin.inc b/includes/admin.inc
index 17febf2..9b2e259 100644
--- a/includes/admin.inc
+++ b/includes/admin.inc
@@ -1462,7 +1462,7 @@ function views_ui_edit_form_submit_delay_destination($form, &$form_state) {
  * having them as secondary local tasks isn't desired. The caller is responsible
  * for setting the active tab's #active property to TRUE.
  *
- * @param $view
+ * @param view $view
  *    The view which will be edited.
  * @param $display_id
  *    The display_id which is edited on the current request.
@@ -1493,6 +1493,18 @@ function views_ui_edit_page_display_tabs($view, $display_id = NULL) {
     $tabs['default']['#access'] = FALSE;
   }
 
+  // Mark the display tab as red to show validation errors.
+  $view->validate();
+  foreach ($view->display as $id => $display) {
+    if (!empty($view->display_errors[$id])) {
+      // Always show the tab.
+      $tabs[$id]['#access'] = TRUE;
+      // Add a class to mark the error and a title to make a hover tip.
+      $tabs[$id]['#link']['localized_options']['attributes']['class'][] = 'error';
+      $tabs[$id]['#link']['localized_options']['attributes']['title'] = t('This display has one or more validation errors; please review it.');
+    }
+  }
+
   return $tabs;
 }
 
diff --git a/includes/view.inc b/includes/view.inc
index c09fc4b..f1ac0ec 100644
--- a/includes/view.inc
+++ b/includes/view.inc
@@ -1953,6 +1953,7 @@ class view extends views_db_object {
     $this->init_display();
 
     $errors = array();
+    $this->display_errors = NULL;
 
     $current_display = $this->current_display;
     foreach ($this->display as $id => $display) {
@@ -1964,6 +1965,8 @@ class view extends views_db_object {
         $result = $this->display[$id]->handler->validate();
         if (!empty($result) && is_array($result)) {
           $errors = array_merge($errors, $result);
+          // Mark this display as having validation errors.
+          $this->display_errors[$id] = TRUE;
         }
       }
     }
