diff --git a/src/plugins/coreplugin/fancytabwidget.cpp b/src/plugins/coreplugin/fancytabwidget.cpp
index 403644f9a4c2fe7f0f5f7111e0c7873116b2ba2a..982662c6acd9e471a6657407024cab9c3f03ef04 100644
--- a/src/plugins/coreplugin/fancytabwidget.cpp
+++ b/src/plugins/coreplugin/fancytabwidget.cpp
@@ -103,18 +103,25 @@ void FancyTabBar::paintEvent(QPaintEvent *event)
 void FancyTabBar::mouseMoveEvent(QMouseEvent *e)
 {
     if (!m_hoverRect.contains(e->pos())) {
+        int newHover = -1;
         for (int i = 0; i < count(); ++i) {
             QRect area = tabRect(i);
             if (area.contains(e->pos())) {
-                m_hoverIndex = i;
-                QRect oldHoverRect = m_hoverRect;
-                m_hoverRect = area;
-                update(oldHoverRect);
-                m_hoverControl.stop();
-                m_hoverControl.start();
+                newHover = i;
                 break;
             }
         }
+
+        m_hoverControl.stop();
+        m_hoverIndex = newHover;
+        update(m_hoverRect);
+        m_hoverRect = QRect();
+
+        if (m_hoverIndex >=0) {
+            QRect oldHoverRect = m_hoverRect;
+            m_hoverRect = tabRect(m_hoverIndex);
+            m_hoverControl.start();
+        }
     }
 }