diff --git a/src/libs/utils/stylehelper.cpp b/src/libs/utils/stylehelper.cpp
index 44cc5bfe88067c3b848a6e956f303f22b2e30c49..887b3f201ef6fd686ab4bd0cb2d3ebe378f2e062 100644
--- a/src/libs/utils/stylehelper.cpp
+++ b/src/libs/utils/stylehelper.cpp
@@ -35,6 +35,8 @@
 #include <QtGui/QPainter>
 #include <QtGui/QApplication>
 #include <QtGui/QPalette>
+#include <QtGui/QStyleOption>
+#include <QtCore/QObject>
 
 // Clamps float color values within (0, 255)
 static int clamp(float x)
@@ -247,6 +249,84 @@ static void menuGradientHelper(QPainter *p, const QRect &spanRect, const QRect &
     p->fillRect(rect, grad);
 }
 
+void StyleHelper::drawArrow(QStyle::PrimitiveElement element, QPainter *painter, const QStyleOption *option)
+{
+    // From windowsstyle but modified to enable AA
+    if (option->rect.width() <= 1 || option->rect.height() <= 1)
+        return;
+
+    QRect r = option->rect;
+    int size = qMin(r.height(), r.width());
+    QPixmap pixmap;
+    QString pixmapName;
+    pixmapName.sprintf("arrow-%s-%d-%d-%d-%lld",
+                       "$qt_ia",
+                       uint(option->state), element,
+                       size, option->palette.cacheKey());
+    if (!QPixmapCache::find(pixmapName, pixmap)) {
+        int border = size/5;
+        int sqsize = 2*(size/2);
+        QImage image(sqsize, sqsize, QImage::Format_ARGB32);
+        image.fill(Qt::transparent);
+        QPainter imagePainter(&image);
+        imagePainter.setRenderHint(QPainter::Antialiasing, true);
+        imagePainter.translate(0.5, 0.5);
+        QPolygon a;
+        switch (element) {
+            case QStyle::PE_IndicatorArrowUp:
+                a.setPoints(3, border, sqsize/2,  sqsize/2, border,  sqsize - border, sqsize/2);
+                break;
+            case QStyle::PE_IndicatorArrowDown:
+                a.setPoints(3, border, sqsize/2,  sqsize/2, sqsize - border,  sqsize - border, sqsize/2);
+                break;
+            case QStyle::PE_IndicatorArrowRight:
+                a.setPoints(3, sqsize - border, sqsize/2,  sqsize/2, border,  sqsize/2, sqsize - border);
+                break;
+            case QStyle::PE_IndicatorArrowLeft:
+                a.setPoints(3, border, sqsize/2,  sqsize/2, border,  sqsize/2, sqsize - border);
+                break;
+            default:
+                break;
+        }
+
+        int bsx = 0;
+        int bsy = 0;
+
+        if (option->state & QStyle::State_Sunken) {
+            bsx = qApp->style()->pixelMetric(QStyle::PM_ButtonShiftHorizontal);
+            bsy = qApp->style()->pixelMetric(QStyle::PM_ButtonShiftVertical);
+        }
+
+        QRect bounds = a.boundingRect();
+        int sx = sqsize / 2 - bounds.center().x() - 1;
+        int sy = sqsize / 2 - bounds.center().y() - 1;
+        imagePainter.translate(sx + bsx, sy + bsy);
+
+        if (!(option->state & QStyle::State_Enabled)) {
+            QColor foreGround(150, 150, 150, 150);
+            imagePainter.setBrush(option->palette.mid().color());
+            imagePainter.setPen(option->palette.mid().color());
+        } else {
+            QColor shadow(0, 0, 0, 100);
+            imagePainter.translate(0, 1);
+            imagePainter.setPen(shadow);
+            imagePainter.setBrush(shadow);
+            QColor foreGround(255, 255, 255, 210);
+            imagePainter.drawPolygon(a);
+            imagePainter.translate(0, -1);
+            imagePainter.setPen(foreGround);
+            imagePainter.setBrush(foreGround);
+        }
+        imagePainter.drawPolygon(a);
+        imagePainter.end();
+        pixmap = QPixmap::fromImage(image);
+        QPixmapCache::insert(pixmapName, pixmap);
+    }
+    int xOffset = r.x() + (r.width() - size)/2;
+    int yOffset = r.y() + (r.height() - size)/2;
+    painter->drawPixmap(xOffset, yOffset, pixmap);
+}
+
 void StyleHelper::menuGradient(QPainter *painter, const QRect &spanRect, const QRect &clipRect)
 {
     if (StyleHelper::usePixmapCache()) {
diff --git a/src/libs/utils/stylehelper.h b/src/libs/utils/stylehelper.h
index aff3ca5554d4b8fa80644f4074b9574173bf6bf8..10b47c9cf9eb966caefe2ad6c9bef00c5b01fcb1 100644
--- a/src/libs/utils/stylehelper.h
+++ b/src/libs/utils/stylehelper.h
@@ -33,6 +33,7 @@
 #include "utils_global.h"
 
 #include <QtGui/QColor>
+#include <QtGui/QStyle>
 
 QT_BEGIN_NAMESPACE
 class QPalette;
@@ -63,6 +64,9 @@ public:
     // Sets the base color and makes sure all top level widgets are updated
     static void setBaseColor(const QColor &color);
 
+    // Draws a shaded anti-aliased arrow
+    static void drawArrow(QStyle::PrimitiveElement element, QPainter *painter, const QStyleOption *option);
+
     // Gradients used for panels
     static void horizontalGradient(QPainter *painter, const QRect &spanRect, const QRect &clipRect, bool lightColored = false);
     static void verticalGradient(QPainter *painter, const QRect &spanRect, const QRect &clipRect, bool lightColored = false);
diff --git a/src/plugins/coreplugin/coreconstants.h b/src/plugins/coreplugin/coreconstants.h
index 0b95a671a832ed56af722619173faa17a8f7d115..be6f2231e3eed0697c5ea64c0edb1269e03d04cf 100644
--- a/src/plugins/coreplugin/coreconstants.h
+++ b/src/plugins/coreplugin/coreconstants.h
@@ -227,7 +227,7 @@ const char * const SETTINGS_CATEGORY_CORE = "A.Core";
 const char * const SETTINGS_TR_CATEGORY_CORE = QT_TRANSLATE_NOOP("Core", "Environment");
 const char * const SETTINGS_ID_ENVIRONMENT = "A.General";
 
-const int TARGET_ICON_SIZE = 32;
+const int TARGET_ICON_SIZE = 24;
 
 } // namespace Constants
 } // namespace Core
diff --git a/src/plugins/coreplugin/fancyactionbar.cpp b/src/plugins/coreplugin/fancyactionbar.cpp
index 4643ff3d55461f26e75d759687d73c84266e7714..b1af053991ec23b943a73c01408c82eff0d4e063 100644
--- a/src/plugins/coreplugin/fancyactionbar.cpp
+++ b/src/plugins/coreplugin/fancyactionbar.cpp
@@ -43,6 +43,10 @@
 #include <QtGui/QStatusBar>
 #include <QtGui/QStyle>
 #include <QtGui/QStyleOption>
+#include <QtCore/QEvent>
+#include <QtGui/QMouseEvent>
+#include <QtCore/QAnimationGroup>
+#include <QtCore/QPropertyAnimation>
 
 using namespace Core;
 using namespace Internal;
@@ -54,50 +58,84 @@ FancyToolButton::FancyToolButton(QWidget *parent)
     setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
 }
 
+void FancySeparator::paintEvent(QPaintEvent *event)
+{
+    Q_UNUSED(event);
+    QPainter painter(this);
+    painter.fillRect(rect(), Qt::red);
+}
+
+bool FancyToolButton::event(QEvent *e)
+{
+    switch(e->type()) {
+    case QEvent::Enter:
+        {
+            QPropertyAnimation *animation = new QPropertyAnimation(this, "fader");
+            animation->setDuration(250);
+            animation->setEndValue(1.0);
+            animation->start(QAbstractAnimation::DeleteWhenStopped);
+        }
+        break;
+    case QEvent::Leave:
+        {
+            QPropertyAnimation *animation = new QPropertyAnimation(this, "fader");
+            animation->setDuration(250);
+            animation->setEndValue(0.0);
+            animation->start(QAbstractAnimation::DeleteWhenStopped);
+        }
+        break;
+    default:
+        return QToolButton::event(e);
+    }
+    return false;
+}
+
 void FancyToolButton::paintEvent(QPaintEvent *event)
 {
     Q_UNUSED(event)
     QPainter painter(this);
 
     // draw borders
-    QLayout *parentLayout = qobject_cast<FancyActionBar*>(parentWidget())->actionsLayout();
     bool isTitledAction = defaultAction()->property("titledAction").toBool();
 
 #ifndef Q_WS_MAC // Mac UIs usually don't hover
-    if (underMouse() && isEnabled() && !isDown()) {
+    if (m_fader > 0 && isEnabled() && !isDown()) {
+        painter.save();
         QColor whiteOverlay(Qt::white);
-        whiteOverlay.setAlpha(20);
-        painter.fillRect(rect().adjusted(1,  1, -1, -1), whiteOverlay);
+        whiteOverlay.setAlpha(int(20 * m_fader));
+        QRect roundRect = rect().adjusted(5, 3, -5, -3);
+        painter.translate(0.5, 0.5);
+        painter.setRenderHint(QPainter::Antialiasing);
+        painter.setBrush(whiteOverlay);
+        whiteOverlay.setAlpha(int(30*m_fader));
+        painter.setPen(whiteOverlay);
+        painter.drawRoundedRect(roundRect, 3, 3);
+        painter.restore();
     }
 #endif
 
-    if (isDown()) {
+    if (isDown() || isChecked()) {
+        painter.save();
         QColor whiteOverlay(Qt::black);
-        whiteOverlay.setAlpha(20);
-        painter.fillRect(rect().adjusted(1,  1, -1, -1), whiteOverlay);
+        whiteOverlay.setAlpha(30);
+        QRect roundRect = rect().adjusted(5, 3, -5, -3);
+        painter.translate(0.5, 0.5);
+        painter.setRenderHint(QPainter::Antialiasing);
+        painter.setPen(QColor(255, 255, 255, 40));
+        static int rounding = 3;
+        painter.drawRoundedRect(roundRect.adjusted(-1, -1, 1, 1), rounding, rounding);
+        painter.setPen(QColor(0, 0, 0, 40));
+        painter.setBrush(QColor(0, 0, 0, 30));
+        painter.drawRoundedRect(roundRect.adjusted(1, 1, 0, 0), rounding, rounding);
+        whiteOverlay.setAlpha(150);
+        painter.setPen(whiteOverlay);
+        painter.setBrush(Qt::NoBrush);
+        painter.drawRoundedRect(roundRect, 3, 3);
+        painter.restore();
     }
 
     QPixmap borderPixmap;
     QMargins margins;
-    if (parentLayout && parentLayout->count() > 0 &&
-        parentLayout->itemAt(parentLayout->count()-1)->widget() == this) {
-        margins = QMargins(3, 3, 2, 0);
-        borderPixmap = QPixmap(
-                QLatin1String(":/fancyactionbar/images/fancytoolbutton_bottom_outline.png"));
-    } else if (parentLayout && parentLayout->count() > 0 &&
-               parentLayout->itemAt(0)->widget() == this) {
-        margins = QMargins(3, 3, 2, 3);
-        borderPixmap = QPixmap(
-                QLatin1String(":/fancyactionbar/images/fancytoolbutton_top_outline.png"));
-    } else {
-        margins = QMargins(3, 3, 2, 0);
-        borderPixmap = QPixmap(
-                QLatin1String(":/fancyactionbar/images/fancytoolbutton_normal_outline.png"));
-    }
-
-    // draw pixmap
-    QRect drawRect = rect();
-    qDrawBorderPixmap(&painter, drawRect, margins, borderPixmap);
 
     QPixmap pix = icon().pixmap(Core::Constants::TARGET_ICON_SIZE, Core::Constants::TARGET_ICON_SIZE, isEnabled() ? QIcon::Normal : QIcon::Disabled);
     QPoint center = rect().center();
@@ -149,17 +187,28 @@ void FancyToolButton::paintEvent(QPaintEvent *event)
             painter.setPen(penColor);
         }
         painter.drawText(r, textFlags, ellidedBuildConfiguration);
+        QStyleOption opt;
+        opt.initFrom(this);
+        opt.rect = rect().adjusted(rect().width() - 18, 0, -10, 0);
+        Utils::StyleHelper::drawArrow(QStyle::PE_IndicatorArrowRight, &painter, &opt);
     }
-
 }
 
 void FancyActionBar::paintEvent(QPaintEvent *event)
 {
+    QPainter painter(this);
     Q_UNUSED(event)
+    QColor light = QColor(255, 255, 255, 40);
+    QColor dark = QColor(0, 0, 0, 60);
+    painter.setPen(dark);
+    painter.drawLine(rect().topLeft(), rect().topRight());
+    painter.setPen(light);
+    painter.drawLine(rect().topLeft() + QPoint(0,1), rect().topRight() + QPoint(0,1));
 }
+
 QSize FancyToolButton::sizeHint() const
 {
-    QSizeF buttonSize = iconSize().expandedTo(QSize(64, 40));
+    QSizeF buttonSize = iconSize().expandedTo(QSize(64, 36));
     if (defaultAction()->property("titledAction").toBool()) {
         QFont boldFont(font());
         boldFont.setPointSizeF(Utils::StyleHelper::sidebarFontSize());
@@ -167,7 +216,6 @@ QSize FancyToolButton::sizeHint() const
         QFontMetrics fm(boldFont);
         qreal lineHeight = fm.height();
         buttonSize += QSizeF(0, (lineHeight*3.5));
-
     }
     return buttonSize.toSize();
 }
@@ -189,21 +237,14 @@ FancyActionBar::FancyActionBar(QWidget *parent)
     : QWidget(parent)
 {
     m_actionsLayout = new QVBoxLayout;
-
     QVBoxLayout *spacerLayout = new QVBoxLayout;
     spacerLayout->addLayout(m_actionsLayout);
     int sbh = ICore::instance()->statusBar()->height();
     spacerLayout->addSpacing(sbh);
     spacerLayout->setMargin(0);
     spacerLayout->setSpacing(0);
-
-    QHBoxLayout *orientRightLayout = new QHBoxLayout;
-    orientRightLayout->addStretch();
-    orientRightLayout->setMargin(0);
-    orientRightLayout->setSpacing(0);
-    orientRightLayout->setContentsMargins(0, 0, 1, 0);
-    orientRightLayout->addLayout(spacerLayout);
-    setLayout(orientRightLayout);
+    setLayout(spacerLayout);
+    setContentsMargins(0,2,0,0);
 }
 
 void FancyActionBar::addProjectSelector(QAction *action)
diff --git a/src/plugins/coreplugin/fancyactionbar.h b/src/plugins/coreplugin/fancyactionbar.h
index 967947c275fcc6f72a5f530cd4849344e80e13fb..cf986c102b2251ae466a2e7e6b0631ad944bad45 100644
--- a/src/plugins/coreplugin/fancyactionbar.h
+++ b/src/plugins/coreplugin/fancyactionbar.h
@@ -45,17 +45,40 @@ class FancyToolButton : public QToolButton
 {
     Q_OBJECT
 
+    Q_PROPERTY(float fader READ fader WRITE setFader)
+
 public:
     FancyToolButton(QWidget *parent = 0);
 
     void paintEvent(QPaintEvent *event);
+    bool event(QEvent *e);
     QSize sizeHint() const;
     QSize minimumSizeHint() const;
 
+    float m_fader;
+    float fader() { return m_fader; }
+    void setFader(float value) { m_fader = value; update(); }
+
 private slots:
     void actionChanged();
 };
 
+class FancySeparator: public QWidget
+{
+    Q_OBJECT
+
+public:
+    FancySeparator(QWidget *parent = 0) :
+            QWidget(parent)
+    {
+        setMinimumHeight(2);
+        setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+    }
+    void paintEvent(QPaintEvent *event);
+};
+
+
+
 class FancyActionBar : public QWidget
 {
     Q_OBJECT
diff --git a/src/plugins/coreplugin/images/mode_Debug.png b/src/plugins/coreplugin/images/mode_Debug.png
index e6ab1e40e3e7801e66633b97c727a2536ac19003..a9fa33806ff331815e286ed079c8d1631542663b 100644
Binary files a/src/plugins/coreplugin/images/mode_Debug.png and b/src/plugins/coreplugin/images/mode_Debug.png differ
diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp
index 9e8e3d0ca1493be5177fc6442147cc15fefa2802..95f0a4cdb8d8bb34f5e8057ecdabfbc073093767 100644
--- a/src/plugins/coreplugin/manhattanstyle.cpp
+++ b/src/plugins/coreplugin/manhattanstyle.cpp
@@ -642,80 +642,7 @@ void ManhattanStyle::drawPrimitive(PrimitiveElement element, const QStyleOption
     case PE_IndicatorArrowRight:
     case PE_IndicatorArrowLeft:
         {
-            // From windowsstyle but modified to enable AA
-            if (option->rect.width() <= 1 || option->rect.height() <= 1)
-                break;
-
-            QRect r = option->rect;
-            int size = qMin(r.height(), r.width());
-            QPixmap pixmap;
-            QString pixmapName;
-            pixmapName.sprintf("%s-%s-%d-%d-%d-%lld",
-                               "$qt_ia", metaObject()->className(),
-                               uint(option->state), element,
-                               size, option->palette.cacheKey());
-            if (!QPixmapCache::find(pixmapName, pixmap)) {
-                int border = size/5;
-                int sqsize = 2*(size/2);
-                QImage image(sqsize, sqsize, QImage::Format_ARGB32);
-                image.fill(Qt::transparent);
-                QPainter imagePainter(&image);
-                imagePainter.setRenderHint(QPainter::Antialiasing, true);
-                imagePainter.translate(0.5, 0.5);
-                QPolygon a;
-                switch (element) {
-                    case PE_IndicatorArrowUp:
-                        a.setPoints(3, border, sqsize/2,  sqsize/2, border,  sqsize - border, sqsize/2);
-                        break;
-                    case PE_IndicatorArrowDown:
-                        a.setPoints(3, border, sqsize/2,  sqsize/2, sqsize - border,  sqsize - border, sqsize/2);
-                        break;
-                    case PE_IndicatorArrowRight:
-                        a.setPoints(3, sqsize - border, sqsize/2,  sqsize/2, border,  sqsize/2, sqsize - border);
-                        break;
-                    case PE_IndicatorArrowLeft:
-                        a.setPoints(3, border, sqsize/2,  sqsize/2, border,  sqsize/2, sqsize - border);
-                        break;
-                    default:
-                        break;
-                }
-
-                int bsx = 0;
-                int bsy = 0;
-
-                if (option->state & State_Sunken) {
-                    bsx = pixelMetric(PM_ButtonShiftHorizontal);
-                    bsy = pixelMetric(PM_ButtonShiftVertical);
-                }
-
-                QRect bounds = a.boundingRect();
-                int sx = sqsize / 2 - bounds.center().x() - 1;
-                int sy = sqsize / 2 - bounds.center().y() - 1;
-                imagePainter.translate(sx + bsx, sy + bsy);
-
-                if (!(option->state & State_Enabled)) {
-                    QColor foreGround(150, 150, 150, 150);
-                    imagePainter.setBrush(option->palette.mid().color());
-                    imagePainter.setPen(option->palette.mid().color());
-                } else {
-                    QColor shadow(0, 0, 0, 100);
-                    imagePainter.translate(0, 1);
-                    imagePainter.setPen(shadow);
-                    imagePainter.setBrush(shadow);
-                    QColor foreGround(255, 255, 255, 210);
-                    imagePainter.drawPolygon(a);
-                    imagePainter.translate(0, -1);
-                    imagePainter.setPen(foreGround);
-                    imagePainter.setBrush(foreGround);
-                }
-                imagePainter.drawPolygon(a);
-                imagePainter.end();
-                pixmap = QPixmap::fromImage(image);
-                QPixmapCache::insert(pixmapName, pixmap);
-            }
-            int xOffset = r.x() + (r.width() - size)/2;
-            int yOffset = r.y() + (r.height() - size)/2;
-            painter->drawPixmap(xOffset, yOffset, pixmap);
+            Utils::StyleHelper::drawArrow(element, painter, option);
         }
         break;
 
diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp
index a77803bf53e710e47d9ff86e650c57c1e5b56d38..051f5241a6e506adcaa8632e853bb4997038ccc9 100644
--- a/src/plugins/projectexplorer/projectexplorer.cpp
+++ b/src/plugins/projectexplorer/projectexplorer.cpp
@@ -698,7 +698,9 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er
     d->m_projectSelectorAction->setEnabled(false);
     QWidget *mainWindow = Core::ICore::instance()->mainWindow();
     d->m_targetSelector = new Internal::MiniProjectTargetSelector(d->m_projectSelectorAction, mainWindow);
-    connect(d->m_projectSelectorAction, SIGNAL(triggered()), d->m_targetSelector, SLOT(show()));
+    d->m_projectSelectorAction->setCheckable(true);
+    connect(d->m_projectSelectorAction, SIGNAL(toggled(bool)), d->m_targetSelector, SLOT(setVisible(bool)));
+
     modeManager->addProjectSelector(d->m_projectSelectorAction);
     cmd = am->registerAction(d->m_projectSelectorAction, ProjectExplorer::Constants::SELECTTARGET,
                        globalcontext);