Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 66656)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 66657)
@@ -412,5 +412,5 @@
     /* If proper machine ID passed => return corresponding pixmap/size: */
     if (index.data(Field_ID).toString() != UIExtraDataManager::GlobalID)
-        pixmap = vboxGlobal().vmGuestOSTypeIcon(index.data(Field_OsTypeID).toString(), &pixmapSize);
+        pixmap = vboxGlobal().vmGuestOSTypePixmapDefault(index.data(Field_OsTypeID).toString(), &pixmapSize);
     else
     {
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIIconPool.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIIconPool.cpp	(revision 66656)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIIconPool.cpp	(revision 66657)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2010-2016 Oracle Corporation
+ * Copyright (C) 2010-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -22,6 +22,6 @@
 /* Qt includes: */
 # include <QApplication>
+# include <QStyle>
 # include <QWidget>
-# include <QStyle>
 
 /* GUI includes: */
@@ -355,8 +355,8 @@
 }
 
-QPixmap UIIconPoolGeneral::guestOSTypeIcon(const QString &strOSTypeID, QSize *pLogicalSize /* = 0 */) const
-{
-    /* Prepare fallback pixmap: */
-    static QPixmap nullPixmap;
+QIcon UIIconPoolGeneral::guestOSTypeIcon(const QString &strOSTypeID) const
+{
+    /* Prepare fallback icon: */
+    static QPixmap nullIcon;
 
     /* If we do NOT have that 'guest OS type' icon cached already: */
@@ -368,5 +368,5 @@
         /* Assign fallback icon if we do NOT have that 'guest OS type' known: */
         else
-            m_guestOSTypeIcons[strOSTypeID] = iconSet(nullPixmap);
+            m_guestOSTypeIcons[strOSTypeID] = iconSet(nullIcon);
     }
 
@@ -375,85 +375,57 @@
     AssertMsgReturn(!icon.isNull(),
                     ("Undefined icon for type '%s'.", strOSTypeID.toLatin1().constData()),
-                    nullPixmap);
-
-    /* Retrieve available sizes for that icon: */
-    const QList<QSize> availableSizes = icon.availableSizes();
-    AssertMsgReturn(!availableSizes.isEmpty(),
-                    ("Undefined icon for type '%s'.", strOSTypeID.toLatin1().constData()),
-                    nullPixmap);
-
-    /* Determine desired icon size: */
-    const QStyle *pStyle = QApplication::style();
-    const int iIconMetric = pStyle->pixelMetric(QStyle::PM_LargeIconSize);
-    const QSize iconSize = QSize(iIconMetric, iIconMetric);
-
-    /* Pass up logical size if necessary: */
-    if (pLogicalSize)
-        *pLogicalSize = iconSize;
-
-    /* Return pixmap of first available size: */
-    return icon.pixmap(iconSize);
-}
-
-QPixmap UIIconPoolGeneral::guestOSTypePixmap(const QString &strOSTypeID, const QSize &physicalSize) const
-{
-    /* Prepare fallback pixmap: */
-    static QPixmap nullPixmap;
-
-    /* If we do NOT have that 'guest OS type' pixmap cached already: */
-    if (!m_guestOSTypePixmaps.contains(strOSTypeID))
+                    nullIcon);
+
+    /* Return icon: */
+    return icon;
+}
+
+QPixmap UIIconPoolGeneral::guestOSTypePixmap(const QString &strOSTypeID, const QSize &size) const
+{
+    /* Acquire icon: */
+    const QIcon icon = guestOSTypeIcon(strOSTypeID);
+
+    /* Prepare pixmap: */
+    QPixmap pixmap;
+
+    /* Check whether we have valid icon: */
+    if (!icon.isNull())
     {
-        /* Compose proper pixmap if we have that 'guest OS type' known: */
-        if (m_guestOSTypeIconNames.contains(strOSTypeID))
-            m_guestOSTypePixmaps[strOSTypeID] = QPixmap(m_guestOSTypeIconNames[strOSTypeID]);
-        /* Assign fallback pixmap if we do NOT have that 'guest OS type' known: */
-        else
-            m_guestOSTypePixmaps[strOSTypeID] = nullPixmap;
+        /* Get pixmap of requested size: */
+        pixmap = icon.pixmap(size);
+        /* And even scale it if size is not valid: */
+        if (pixmap.size() != size)
+            pixmap = pixmap.scaled(size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
     }
 
-    /* Retrieve corresponding pixmap: */
-    const QPixmap &pixmap = m_guestOSTypePixmaps.value(strOSTypeID);
-    AssertMsgReturn(!pixmap.isNull(),
-                    ("Undefined pixmap for type '%s'.", strOSTypeID.toLatin1().constData()),
-                    nullPixmap);
-
-    /* Return pixmap of the requested size: */
-    return pixmap.size() == physicalSize ? pixmap : pixmap.scaled(physicalSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
-}
-
-QPixmap UIIconPoolGeneral::guestOSTypePixmapHiDPI(const QString &strOSTypeID, const QSize &physicalSize) const
-{
-    /* Prepare fallback pixmap: */
-    static QPixmap nullPixmap;
-
-    /* If we do NOT have that 'guest OS type' pixmap cached already: */
-    if (!m_guestOSTypePixmapsHiDPI.contains(strOSTypeID))
+    /* Return pixmap: */
+    return pixmap;
+}
+
+QPixmap UIIconPoolGeneral::guestOSTypePixmapDefault(const QString &strOSTypeID, QSize *pLogicalSize /* = 0 */) const
+{
+    /* Acquire icon: */
+    const QIcon icon = guestOSTypeIcon(strOSTypeID);
+
+    /* Prepare pixmap: */
+    QPixmap pixmap;
+
+    /* Check whether we have valid icon: */
+    if (!icon.isNull())
     {
-        /* Compose proper pixmap if we have that 'guest OS type' known: */
-        if (m_guestOSTypeIconNames.contains(strOSTypeID))
-        {
-            /* Get name: */
-            const QString strName =  m_guestOSTypeIconNames.value(strOSTypeID);
-            /* Parse name to prefix and suffix: */
-            const QString strPrefix = strName.section('.', 0, -2);
-            const QString strSuffix = strName.section('.', -1, -1);
-            /* Prepare HiDPI pixmap on the basis of values above: */
-            const QPixmap pixmapHiDPI(strPrefix + "_hidpi." + strSuffix);
-            /* Remember HiDPI pixmap: */
-            m_guestOSTypePixmapsHiDPI[strOSTypeID] = pixmapHiDPI;
-        }
-        /* Assign fallback pixmap if we do NOT have that 'guest OS type' known: */
-        else
-            m_guestOSTypePixmapsHiDPI[strOSTypeID] = nullPixmap;
+        /* Determine desired icon size: */
+        const int iIconMetric = QApplication::style()->pixelMetric(QStyle::PM_LargeIconSize);
+        const QSize iconSize = QSize(iIconMetric, iIconMetric);
+
+        /* Pass up logical size if necessary: */
+        if (pLogicalSize)
+            *pLogicalSize = iconSize;
+
+        /* Get pixmap of requested size: */
+        pixmap = icon.pixmap(iconSize);
     }
 
-    /* Retrieve corresponding pixmap: */
-    const QPixmap &pixmap = m_guestOSTypePixmapsHiDPI.value(strOSTypeID);
-    AssertMsgReturn(!pixmap.isNull(),
-                    ("Undefined pixmap for type '%s'.", strOSTypeID.toLatin1().constData()),
-                    nullPixmap);
-
-    /* Return pixmap of the requested size: */
-    return pixmap.size() == physicalSize ? pixmap : pixmap.scaled(physicalSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
-}
-
+    /* Return pixmap: */
+    return pixmap;
+}
+
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIIconPool.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIIconPool.h	(revision 66656)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIIconPool.h	(revision 66657)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2010-2016 Oracle Corporation
+ * Copyright (C) 2010-2017 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -23,4 +23,5 @@
 #include <QPixmap>
 #include <QHash>
+
 
 /** Interface which provides GUI with static API
@@ -103,12 +104,11 @@
     UIIconPoolGeneral();
 
+    /** Returns icon corresponding to passed @a strOSTypeID. */
+    QIcon guestOSTypeIcon(const QString &strOSTypeID) const;
+    /** Returns pixmap corresponding to passed @a strOSTypeID and @a size. */
+    QPixmap guestOSTypePixmap(const QString &strOSTypeID, const QSize &size) const;
     /** Returns pixmap corresponding to passed @a strOSTypeID.
       * In case if non-null @a pLogicalSize pointer provided, it will be updated properly. */
-    QPixmap guestOSTypeIcon(const QString &strOSTypeID, QSize *pLogicalSize = 0) const;
-
-    /** Returns pixmap corresponding to passed @a strOSTypeID and @a physicalSize. */
-    QPixmap guestOSTypePixmap(const QString &strOSTypeID, const QSize &physicalSize) const;
-    /** Returns HiDPI pixmap corresponding to passed @a strOSTypeID and @a physicalSize. */
-    QPixmap guestOSTypePixmapHiDPI(const QString &strOSTypeID, const QSize &physicalSize) const;
+    QPixmap guestOSTypePixmapDefault(const QString &strOSTypeID, QSize *pLogicalSize = 0) const;
 
 private:
@@ -118,8 +118,4 @@
     /** Guest OS type icons cache. */
     mutable QHash<QString, QIcon> m_guestOSTypeIcons;
-    /** Holds the guest OS type pixmaps cache. */
-    mutable QHash<QString, QPixmap> m_guestOSTypePixmaps;
-    /** Holds the guest OS type HiDPI pixmaps cache. */
-    mutable QHash<QString, QPixmap> m_guestOSTypePixmapsHiDPI;
 };
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 66656)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.cpp	(revision 66657)
@@ -558,5 +558,17 @@
 }
 
-QPixmap VBoxGlobal::vmGuestOSTypeIcon(const QString &strOSTypeID, QSize *pLogicalSize /* = 0 */) const
+QIcon VBoxGlobal::vmGuestOSTypeIcon(const QString &strOSTypeID) const
+{
+    /* Prepare fallback icon: */
+    static QIcon nullIcon;
+
+    /* Make sure general icon-pool initialized: */
+    AssertReturn(m_pIconPool, nullIcon);
+
+    /* Redirect to general icon-pool: */
+    return m_pIconPool->guestOSTypeIcon(strOSTypeID);
+}
+
+QPixmap VBoxGlobal::vmGuestOSTypePixmap(const QString &strOSTypeID, const QSize &size) const
 {
     /* Prepare fallback pixmap: */
@@ -567,8 +579,8 @@
 
     /* Redirect to general icon-pool: */
-    return m_pIconPool->guestOSTypeIcon(strOSTypeID, pLogicalSize);
-}
-
-QPixmap VBoxGlobal::vmGuestOSTypePixmap(const QString &strOSTypeID, const QSize &physicalSize) const
+    return m_pIconPool->guestOSTypePixmap(strOSTypeID, size);
+}
+
+QPixmap VBoxGlobal::vmGuestOSTypePixmapDefault(const QString &strOSTypeID, QSize *pLogicalSize /* = 0 */) const
 {
     /* Prepare fallback pixmap: */
@@ -579,17 +591,5 @@
 
     /* Redirect to general icon-pool: */
-    return m_pIconPool->guestOSTypePixmap(strOSTypeID, physicalSize);
-}
-
-QPixmap VBoxGlobal::vmGuestOSTypePixmapHiDPI(const QString &strOSTypeID, const QSize &physicalSize) const
-{
-    /* Prepare fallback pixmap: */
-    static QPixmap nullPixmap;
-
-    /* Make sure general icon-pool initialized: */
-    AssertReturn(m_pIconPool, nullPixmap);
-
-    /* Redirect to general icon-pool: */
-    return m_pIconPool->guestOSTypePixmapHiDPI(strOSTypeID, physicalSize);
+    return m_pIconPool->guestOSTypePixmapDefault(strOSTypeID, pLogicalSize);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 66656)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/VBoxGlobal.h	(revision 66657)
@@ -222,12 +222,11 @@
     QList <CGuestOSType> vmGuestOSTypeList (const QString &aFamilyId) const;
 
+    /** Returns pixmap corresponding to passed @a strOSTypeID. */
+    QIcon vmGuestOSTypeIcon(const QString &strOSTypeID) const;
+    /** Returns pixmap corresponding to passed @a strOSTypeID and @a size. */
+    QPixmap vmGuestOSTypePixmap(const QString &strOSTypeID, const QSize &size) const;
     /** Returns pixmap corresponding to passed @a strOSTypeID.
       * In case if non-null @a pLogicalSize pointer provided, it will be updated properly. */
-    QPixmap vmGuestOSTypeIcon(const QString &strOSTypeID, QSize *pLogicalSize = 0) const;
-
-    /** Returns pixmap corresponding to passed @a strOSTypeID and @a physicalSize. */
-    QPixmap vmGuestOSTypePixmap(const QString &strOSTypeID, const QSize &physicalSize) const;
-    /** Returns HiDPI pixmap corresponding to passed @a strOSTypeID and @a physicalSize. */
-    QPixmap vmGuestOSTypePixmapHiDPI(const QString &strOSTypeID, const QSize &physicalSize) const;
+    QPixmap vmGuestOSTypePixmapDefault(const QString &strOSTypeID, QSize *pLogicalSize = 0) const;
 
     CGuestOSType vmGuestOSType (const QString &aTypeId,
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 66656)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 66657)
@@ -1276,7 +1276,7 @@
 # endif /* QT_VERSION >= 0x050000 */
 
-    /* Now the dock icon preview */
-    QString osTypeId = guest().GetOSTypeId();
-    m_pDockIconPreview = new UIDockIconPreview(uisession(), vboxGlobal().vmGuestOSTypePixmapHiDPI(osTypeId, QSize(42, 42)));
+    /* Now the dock icon preview: */
+    const QPixmap pixmap = vboxGlobal().vmGuestOSTypePixmap(guest().GetOSTypeId(), QSize(42, 42));
+    m_pDockIconPreview = new UIDockIconPreview(uisession(), pixmap);
 
     /* Should the dock-icon be updated at runtime? */
@@ -1554,6 +1554,6 @@
 
     /* Assign corresponding icon: */
-    QString strTypeId = machine().GetOSTypeId();
-    pDlg->mLbIcon->setPixmap(vboxGlobal().vmGuestOSTypeIcon(strTypeId));
+    const QPixmap pixmap = vboxGlobal().vmGuestOSTypePixmapDefault(guest().GetOSTypeId());
+    pDlg->mLbIcon->setPixmap(pixmap);
 
     /* Search for the max available filter index: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIVMCloseDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIVMCloseDialog.cpp	(revision 66656)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIVMCloseDialog.cpp	(revision 66657)
@@ -318,5 +318,5 @@
 
     /* Assign pixmap: */
-    setPixmap(vboxGlobal().vmGuestOSTypeIcon(m_machine.GetOSTypeId()));
+    setPixmap(vboxGlobal().vmGuestOSTypePixmapDefault(m_machine.GetOSTypeId()));
 
     /* Check which close-actions are resticted: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISnapshotPane.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISnapshotPane.cpp	(revision 66656)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UISnapshotPane.cpp	(revision 66657)
@@ -903,5 +903,6 @@
 
             // TODO: Assign corresponding icon through sub-dialog API: */
-            pDlg->mLbIcon->setPixmap(vboxGlobal().vmGuestOSTypeIcon(m_comMachine.GetOSTypeId()));
+            const QPixmap pixmap = vboxGlobal().vmGuestOSTypePixmapDefault(m_comMachine.GetOSTypeId());
+            pDlg->mLbIcon->setPixmap(pixmap);
 
             /* Search for the max available snapshot index: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.cpp	(revision 66656)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/selector/UIVMItem.cpp	(revision 66657)
@@ -155,6 +155,6 @@
 QPixmap UIVMItem::osPixmap(QSize *pLogicalSize /* = 0 */) const
 {
-    return m_fAccessible ? vboxGlobal().vmGuestOSTypeIcon(m_strOSTypeId, pLogicalSize) :
-                           vboxGlobal().vmGuestOSTypeIcon("Other", pLogicalSize);
+    return m_fAccessible ? vboxGlobal().vmGuestOSTypePixmapDefault(m_strOSTypeId, pLogicalSize) :
+                           vboxGlobal().vmGuestOSTypePixmapDefault("Other", pLogicalSize);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceEditorWidget.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceEditorWidget.cpp	(revision 66656)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIApplianceEditorWidget.cpp	(revision 66657)
@@ -522,5 +522,5 @@
                 const QStyle *pStyle = QApplication::style();
                 const int iIconMetric = pStyle->pixelMetric(QStyle::PM_SmallIconSize);
-                value = vboxGlobal().vmGuestOSTypeIcon(m_strConfigValue).scaledToHeight(iIconMetric, Qt::SmoothTransformation);
+                value = vboxGlobal().vmGuestOSTypePixmapDefault(m_strConfigValue).scaledToHeight(iIconMetric, Qt::SmoothTransformation);
             }
             break;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UINameAndSystemEditor.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UINameAndSystemEditor.cpp	(revision 66656)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UINameAndSystemEditor.cpp	(revision 66657)
@@ -354,5 +354,5 @@
     m_type = vboxGlobal().vmGuestOSType(m_pComboType->itemData(iIndex, TypeID).toString(),
                                         m_pComboFamily->itemData(m_pComboFamily->currentIndex(), TypeID).toString());
-    m_pIconType->setPixmap(vboxGlobal().vmGuestOSTypeIcon(m_type.GetId()));
+    m_pIconType->setPixmap(vboxGlobal().vmGuestOSTypePixmapDefault(m_type.GetId()));
 
     /* Save the most recently used item: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorButton.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorButton.cpp	(revision 66656)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/VBoxOSTypeSelectorButton.cpp	(revision 66657)
@@ -58,5 +58,5 @@
     /* Looks ugly on the Mac */
 #ifndef VBOX_WS_MAC
-    setIcon (vboxGlobal().vmGuestOSTypeIcon (type.GetId()));
+    setIcon (vboxGlobal().vmGuestOSTypePixmapDefault (type.GetId()));
 #endif /* VBOX_WS_MAC */
     setText (type.GetDescription());
@@ -84,5 +84,5 @@
         foreach (const CGuestOSType& type, types)
         {
-            QAction *a = subMenu->addAction (vboxGlobal().vmGuestOSTypeIcon (type.GetId()), type.GetDescription());
+            QAction *a = subMenu->addAction (vboxGlobal().vmGuestOSTypePixmapDefault (type.GetId()), type.GetDescription());
             connect(a, SIGNAL (triggered()),
                     mSignalMapper, SLOT(map()));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic1.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic1.cpp	(revision 66656)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/wizards/exportappliance/UIWizardExportAppPageBasic1.cpp	(revision 66657)
@@ -56,5 +56,5 @@
         if (machine.GetAccessible())
         {
-            pixIcon = vboxGlobal().vmGuestOSTypeIcon(machine.GetOSTypeId()).scaled(iIconMetric, iIconMetric, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
+            pixIcon = vboxGlobal().vmGuestOSTypePixmapDefault(machine.GetOSTypeId()).scaled(iIconMetric, iIconMetric, Qt::IgnoreAspectRatio, Qt::SmoothTransformation);
             strName = machine.GetName();
             strUuid = machine.GetId();
