diff --git a/css/views-admin.theme.css b/css/views-admin.theme.css
index df45cdf..b256e8b 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 didn't validated.
+ */
+.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 df6a0d2..be92b5f 100644
--- a/includes/admin.inc
+++ b/includes/admin.inc
@@ -1451,7 +1451,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.
@@ -1482,6 +1482,17 @@ 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.
+      $tabs[$id]['#link']['localized_options']['attributes']['class'][] = 'error';
+    }
+  }
+
   return $tabs;
 }
 
diff --git a/includes/view.inc b/includes/view.inc
index 4136c2f..96c361c 100644
--- a/includes/view.inc
+++ b/includes/view.inc
@@ -103,10 +103,17 @@ class view extends views_db_object {
 
   /**
    * Allow to override the used database which is used for this query.
+   *
+   * @var string
    */
   var $base_database = NULL;
 
   /**
+   * Stores all displays which has a validator error.
+   */
+  var $display_errors = NULL;
+
+  /**
    * Constructor
    */
   function __construct() {
@@ -1871,6 +1878,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) {
@@ -1882,9 +1890,13 @@ 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 validations.
+          $this->display_errors[$id] = TRUE;
         }
       }
     }
+    $errors[] = 'foo';
+    $this->display_errors['default'] = TRUE;
 
     $this->set_display($current_display);
     return $errors ? $errors : TRUE;
