diff --git a/src/libs/utils/fadingindicator.cpp b/src/libs/utils/fadingindicator.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..ee8c2c70b3a1cd2583aba51de2867fb2549be742
--- /dev/null
+++ b/src/libs/utils/fadingindicator.cpp
@@ -0,0 +1,146 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company.  For licensing terms and
+** conditions see http://www.qt.io/terms-conditions.  For further information
+** use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file.  Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, The Qt Company gives you certain additional
+** rights.  These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+#include "fadingindicator.h"
+
+#include "stylehelper.h"
+
+#include <QGraphicsOpacityEffect>
+#include <QHBoxLayout>
+#include <QLabel>
+#include <QPainter>
+#include <QPixmap>
+#include <QPropertyAnimation>
+#include <QTimer>
+
+namespace Utils {
+namespace Internal {
+
+class FadingIndicatorPrivate : public QWidget
+{
+    Q_OBJECT
+
+public:
+    FadingIndicatorPrivate(QWidget *parent = 0)
+        : QWidget(parent)
+    {
+        m_effect = new QGraphicsOpacityEffect(this);
+        setGraphicsEffect(m_effect);
+        m_effect->setOpacity(1.);
+
+        m_label = new QLabel;
+        QFont font = m_label->font();
+        font.setPixelSize(45);
+        m_label->setFont(font);
+        QPalette pal = palette();
+        pal.setColor(QPalette::Foreground, pal.color(QPalette::Background));
+        m_label->setPalette(pal);
+        auto layout = new QHBoxLayout;
+        setLayout(layout);
+        layout->addWidget(m_label);
+    }
+
+    void setText(const QString &text)
+    {
+        m_pixmap = QPixmap();
+        m_label->setText(text);
+        adjustSize();
+        if (QWidget *parent = parentWidget())
+            move(parent->rect().center() - rect().center());
+    }
+
+    void setPixmap(const QString &uri)
+    {
+        m_label->hide();
+        m_pixmap.load(Utils::StyleHelper::dpiSpecificImageFile(uri));
+        resize(m_pixmap.size() / m_pixmap.devicePixelRatio());
+        if (QWidget *parent = parentWidget())
+            move(parent->rect().center() - rect().center());
+    }
+
+    void run(int ms)
+    {
+        show();
+        raise();
+        QTimer::singleShot(ms, this, SLOT(runInternal()));
+    }
+
+protected:
+    void paintEvent(QPaintEvent *)
+    {
+        QPainter p(this);
+        p.setRenderHint(QPainter::Antialiasing);
+        if (!m_pixmap.isNull()) {
+            p.drawPixmap(rect(), m_pixmap);
+        } else {
+            p.setBrush(palette().color(QPalette::Foreground));
+            p.setPen(Qt::NoPen);
+            p.drawRoundedRect(rect(), 15, 15);
+        }
+    }
+
+private slots:
+    void runInternal()
+    {
+        QPropertyAnimation *anim = new QPropertyAnimation(m_effect, "opacity", this);
+        anim->setDuration(200);
+        anim->setEndValue(0.);
+        connect(anim, SIGNAL(finished()), this, SLOT(deleteLater()));
+        anim->start(QAbstractAnimation::DeleteWhenStopped);
+    }
+
+private:
+    QGraphicsOpacityEffect *m_effect;
+    QLabel *m_label;
+    QPixmap m_pixmap;
+};
+
+} // Internal
+
+namespace FadingIndicator {
+
+void showText(QWidget *parent, const QString &text)
+{
+    auto indicator = new Internal::FadingIndicatorPrivate(parent);
+    indicator->setText(text);
+    indicator->run(1000); // deletes itself
+}
+
+void showPixmap(QWidget *parent, const QString &pixmap)
+{
+    auto indicator = new Internal::FadingIndicatorPrivate(parent);
+    indicator->setPixmap(pixmap);
+    indicator->run(300); // deletes itself
+}
+
+} // FadingIndicator
+} // Utils
+
+#include "fadingindicator.moc"
diff --git a/src/libs/utils/fadingindicator.h b/src/libs/utils/fadingindicator.h
new file mode 100644
index 0000000000000000000000000000000000000000..7738e751a641fb6fc916b7afb418cee9118079bb
--- /dev/null
+++ b/src/libs/utils/fadingindicator.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+**
+** Copyright (C) 2015 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company.  For licensing terms and
+** conditions see http://www.qt.io/terms-conditions.  For further information
+** use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 or version 3 as published by the Free
+** Software Foundation and appearing in the file LICENSE.LGPLv21 and
+** LICENSE.LGPLv3 included in the packaging of this file.  Please review the
+** following information to ensure the GNU Lesser General Public License
+** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, The Qt Company gives you certain additional
+** rights.  These rights are described in The Qt Company LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+****************************************************************************/
+
+
+#ifndef FADINGINDICATOR_H
+#define FADINGINDICATOR_H
+
+#include "utils_global.h"
+
+#include <QString>
+#include <QWidget>
+
+namespace Utils {
+namespace FadingIndicator {
+
+QTCREATOR_UTILS_EXPORT void showText(QWidget *parent, const QString &text);
+QTCREATOR_UTILS_EXPORT void showPixmap(QWidget *parent, const QString &pixmap);
+
+} // FadingIndicator
+} // Utils
+
+#endif // FADINGINDICATOR_H
+
diff --git a/src/libs/utils/utils-lib.pri b/src/libs/utils/utils-lib.pri
index bd138d0f18a455809c6b13f834b08560a3d2fdaf..34b3549dc8eaf17695b1908ad228ae75934d5175 100644
--- a/src/libs/utils/utils-lib.pri
+++ b/src/libs/utils/utils-lib.pri
@@ -92,7 +92,8 @@ SOURCES += $$PWD/environment.cpp \
     $$PWD/proxycredentialsdialog.cpp \
     $$PWD/macroexpander.cpp \
     $$PWD/theme/theme.cpp \
-    $$PWD/progressindicator.cpp
+    $$PWD/progressindicator.cpp \
+    $$PWD/fadingindicator.cpp
 
 win32:SOURCES += $$PWD/consoleprocess_win.cpp
 else:SOURCES += $$PWD/consoleprocess_unix.cpp
@@ -190,7 +191,8 @@ HEADERS += \
     $$PWD/macroexpander.h \
     $$PWD/theme/theme.h \
     $$PWD/theme/theme_p.h \
-    $$PWD/progressindicator.h
+    $$PWD/progressindicator.h \
+    $$PWD/fadingindicator.h
 
 FORMS += $$PWD/filewizardpage.ui \
     $$PWD/projectintropage.ui \
diff --git a/src/libs/utils/utils.qbs b/src/libs/utils/utils.qbs
index a2260ba1b69eb37c7064763a767c834d54992c02..603a0e6e49fff4b3eccb02297494e7c45a898ef8 100644
--- a/src/libs/utils/utils.qbs
+++ b/src/libs/utils/utils.qbs
@@ -72,6 +72,8 @@ QtcLibrary {
         "environmentmodel.h",
         "execmenu.cpp",
         "execmenu.h",
+        "fadingindicator.cpp",
+        "fadingindicator.h",
         "faketooltip.cpp",
         "faketooltip.h",
         "fancylineedit.cpp",
diff --git a/src/plugins/coreplugin/actionmanager/actionmanager.cpp b/src/plugins/coreplugin/actionmanager/actionmanager.cpp
index 121fed8f25e6bcfbfc05a496a990ed58cc8ab8f7..81107deba7cc10d3ce9e6d5796604d1b4c5428d1 100644
--- a/src/plugins/coreplugin/actionmanager/actionmanager.cpp
+++ b/src/plugins/coreplugin/actionmanager/actionmanager.cpp
@@ -35,13 +35,13 @@
 
 #include <coreplugin/icore.h>
 #include <coreplugin/id.h>
+#include <utils/fadingindicator.h>
 #include <utils/qtcassert.h>
 
 #include <QAction>
 #include <QApplication>
 #include <QDebug>
 #include <QDesktopWidget>
-#include <QLabel>
 #include <QMenu>
 #include <QMenuBar>
 #include <QSettings>
@@ -354,26 +354,12 @@ void ActionManager::setPresentationModeEnabled(bool enabled)
         }
     }
 
-    // The label for the shortcuts:
-    if (!d->m_presentationLabel) {
-        d->m_presentationLabel = new QLabel(0, Qt::ToolTip | Qt::WindowStaysOnTopHint);
-        QFont font = d->m_presentationLabel->font();
-        font.setPixelSize(45);
-        d->m_presentationLabel->setFont(font);
-        d->m_presentationLabel->setAlignment(Qt::AlignCenter);
-        d->m_presentationLabel->setMargin(5);
-
-        connect(&d->m_presentationLabelTimer, SIGNAL(timeout()), d->m_presentationLabel, SLOT(hide()));
-    } else {
-        d->m_presentationLabelTimer.stop();
-        delete d->m_presentationLabel;
-        d->m_presentationLabel = 0;
-    }
+    d->m_presentationModeEnabled = enabled;
 }
 
 bool ActionManager::isPresentationModeEnabled()
 {
-    return d->m_presentationLabel;
+    return d->m_presentationModeEnabled;
 }
 
 void ActionManager::initialize(QObject *parent)
@@ -399,9 +385,8 @@ void ActionManager::setContext(const Context &context)
 */
 
 ActionManagerPrivate::ActionManagerPrivate()
-  : m_presentationLabel(0)
+  : m_presentationModeEnabled(false)
 {
-    m_presentationLabelTimer.setInterval(1000);
 }
 
 ActionManagerPrivate::~ActionManagerPrivate()
@@ -459,25 +444,18 @@ void ActionManagerPrivate::showShortcutPopup(const QString &shortcut)
     if (shortcut.isEmpty() || !ActionManager::isPresentationModeEnabled())
         return;
 
-    m_presentationLabel->setText(shortcut);
-    m_presentationLabel->adjustSize();
-
     QWidget *window = QApplication::activeWindow();
-    if (!window && !QApplication::topLevelWidgets().isEmpty())
-        window = QApplication::topLevelWidgets().first();
-    QPoint center;
-    if (window) {
-        center = window->mapToGlobal(window->rect().center());
-    } else {
-        QTC_ASSERT(QApplication::desktop(), return);
-        center = QApplication::desktop()->screenGeometry().center();
+    if (!window) {
+        if (!QApplication::topLevelWidgets().isEmpty()) {
+            window = QApplication::topLevelWidgets().first();
+        } else {
+            QTC_ASSERT(QApplication::desktop(), return);
+            window = QApplication::desktop()->screen();
+            QTC_ASSERT(window, return);
+        }
     }
-    QPoint p = center - m_presentationLabel->rect().center();
-    m_presentationLabel->move(p);
 
-    m_presentationLabel->show();
-    m_presentationLabel->raise();
-    m_presentationLabelTimer.start();
+    Utils::FadingIndicator::showText(window, shortcut);
 }
 
 Action *ActionManagerPrivate::overridableAction(Id id)
diff --git a/src/plugins/coreplugin/actionmanager/actionmanager_p.h b/src/plugins/coreplugin/actionmanager/actionmanager_p.h
index fbdbc787fcd81d108a8849786a6f127fbaf9062d..e47fad44643d9c1e727a082b42b04c44d1f4ae9c 100644
--- a/src/plugins/coreplugin/actionmanager/actionmanager_p.h
+++ b/src/plugins/coreplugin/actionmanager/actionmanager_p.h
@@ -89,6 +89,7 @@ public:
 
     Context m_context;
 
+    bool m_presentationModeEnabled;
     QLabel *m_presentationLabel;
     QTimer m_presentationLabelTimer;
 };
diff --git a/src/plugins/coreplugin/find/ifindsupport.cpp b/src/plugins/coreplugin/find/ifindsupport.cpp
index f08f1fada447779e71a848e21025df3d9949f769..5e26adc20332e95027ccaf1bd235e93588b72afb 100644
--- a/src/plugins/coreplugin/find/ifindsupport.cpp
+++ b/src/plugins/coreplugin/find/ifindsupport.cpp
@@ -30,64 +30,7 @@
 
 #include "ifindsupport.h"
 
-#include <QTimer>
-#include <QPropertyAnimation>
-#include <QWidget>
-#include <QPaintEvent>
-#include <QPainter>
-
-namespace Core {
-namespace Internal {
-
-class WrapIndicator : public QWidget
-{
-    Q_OBJECT
-    Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity USER true)
-
-public:
-    WrapIndicator(QWidget *parent = 0)
-        : QWidget(parent),
-          m_opacity(1.0)
-    {
-        if (parent)
-            setGeometry(QRect(parent->rect().center() - QPoint(25, 25),
-                              parent->rect().center() + QPoint(25, 25)));
-    }
-
-    qreal opacity() const { return m_opacity; }
-    void setOpacity(qreal value) { m_opacity = value; update(); }
-
-    void run()
-    {
-        show();
-        QTimer::singleShot(300, this, SLOT(runInternal()));
-    }
-
-protected:
-    void paintEvent(QPaintEvent *)
-    {
-        static QPixmap foreground(QLatin1String(":/find/images/wrapindicator.png"));
-        QPainter p(this);
-        p.setOpacity(m_opacity);
-        p.drawPixmap(rect(), foreground);
-    }
-
-private slots:
-    void runInternal()
-    {
-        QPropertyAnimation *anim = new QPropertyAnimation(this, "opacity", this);
-        anim->setDuration(200);
-        anim->setEndValue(0.);
-        connect(anim, SIGNAL(finished()), this, SLOT(deleteLater()));
-        anim->start(QAbstractAnimation::DeleteWhenStopped);
-    }
-
-private:
-    qreal m_opacity;
-};
-
-} // Internal
-} // Find
+#include <utils/fadingindicator.h>
 
 using namespace Core;
 
@@ -116,7 +59,5 @@ int IFindSupport::replaceAll(const QString &before, const QString &after, FindFl
 
 void IFindSupport::showWrapIndicator(QWidget *parent)
 {
-    (new Internal::WrapIndicator(parent))->run();
+    Utils::FadingIndicator::showPixmap(parent, QLatin1String(":/find/images/wrapindicator.png"));
 }
-
-#include "ifindsupport.moc"