diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp
index 629b20f0fb48814719c21a51c45de8d23909197e..92952d9d89491a80cb656a0fd840c90eb86b7013 100644
--- a/src/plugins/coreplugin/manhattanstyle.cpp
+++ b/src/plugins/coreplugin/manhattanstyle.cpp
@@ -498,24 +498,14 @@ void ManhattanStyle::drawPrimitive(PrimitiveElement element, const QStyleOption
                 QColor shadow(0, 0, 0, 30);
                 painter->setPen(shadow);
                 if (pressed) {
-                    QColor shade(0, 0, 0, 50);
-                    if (option->state & State_Sunken)
-                        shade = QColor(0, 0, 0, 50);
-#ifndef Q_WS_MAC
-                    else if (option->state & State_MouseOver)
-                        shade = QColor(255, 255, 255, 12);
-#endif
-                    else if (option->state & State_On)
-                        shade = QColor(0, 0, 0, 50);
-                    else
-                        shade = QColor(0, 0, 0, 0);
-                    painter->fillRect(rect.adjusted(1, 1, -1, -1), shade);
-                    painter->drawLine(rect.topLeft(), rect.topRight());
+                    QColor shade(0, 0, 0, 40);
+                    painter->fillRect(rect, shade);
+                    painter->drawLine(rect.topLeft() + QPoint(1, 0), rect.topRight() - QPoint(1, 0));
                     painter->drawLine(rect.topLeft(), rect.bottomLeft());
+                    painter->drawLine(rect.topRight(), rect.bottomRight());
+                   // painter->drawLine(rect.bottomLeft()  + QPoint(1, 0), rect.bottomRight()  - QPoint(1, 0));
                     QColor highlight(255, 255, 255, 30);
                     painter->setPen(highlight);
-                    painter->drawLine(rect.topRight(), rect.bottomRight());
-                    painter->drawLine(rect.bottomLeft(), rect.bottomRight());
                 }
                 else if (option->state & State_Enabled &&
                          option->state & State_MouseOver) {
@@ -1020,7 +1010,7 @@ void ManhattanStyle::drawComplexControl(ComplexControl control, const QStyleOpti
             grad.setColorAt(1, QColor(255, 255, 255, 40));
             painter->setPen(QPen(grad, 0));
             painter->drawLine(rect.topRight(), rect.bottomRight());
-            grad.setColorAt(0, QColor(0, 0, 0, 20));
+            grad.setColorAt(0, QColor(0, 0, 0, 30));
             grad.setColorAt(0.4, QColor(0, 0, 0, 70));
             grad.setColorAt(0.7, QColor(0, 0, 0, 70));
             grad.setColorAt(1, QColor(0, 0, 0, 40));
@@ -1030,11 +1020,12 @@ void ManhattanStyle::drawComplexControl(ComplexControl control, const QStyleOpti
             else
                 painter->drawLine(rect.topLeft(), rect.bottomLeft());
             QStyleOption toolbutton = *option;
-            toolbutton.rect.adjust(0, 0, -2, 0);
             if (isEmpty)
                 toolbutton.state &= ~(State_Enabled | State_Sunken);
+            painter->save();
+            painter->setClipRect(toolbutton.rect.adjusted(0, 0, -2, 0));
             drawPrimitive(PE_PanelButtonTool, &toolbutton, painter, widget);
-
+            painter->restore();
             // Draw arrow
             int menuButtonWidth = 12;
             int left = !reverse ? rect.right() - menuButtonWidth : rect.left();