Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 82435)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 82436)
@@ -350,4 +350,11 @@
 #endif /* VBOX_WITH_VIDEOHWACCEL */
 
+KGraphicsControllerType UIMachineSettingsDisplay::graphicsControllerTypeRecommended() const
+{
+    return   m_pGraphicsControllerEditor->supportedValues().contains(m_enmGraphicsControllerTypeRecommended)
+           ? m_enmGraphicsControllerTypeRecommended
+           : graphicsControllerTypeCurrent();
+}
+
 KGraphicsControllerType UIMachineSettingsDisplay::graphicsControllerTypeCurrent() const
 {
@@ -662,5 +669,5 @@
         if (!m_comGuestOSType.isNull())
         {
-            if (m_pGraphicsControllerEditor->value() != m_enmGraphicsControllerTypeRecommended)
+            if (graphicsControllerTypeCurrent() != graphicsControllerTypeRecommended())
             {
 #ifdef VBOX_WITH_3D_ACCELERATION
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.h	(revision 82435)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.h	(revision 82436)
@@ -60,5 +60,5 @@
 
     /** Returns recommended graphics controller type. */
-    KGraphicsControllerType graphicsControllerTypeRecommended() const { return m_enmGraphicsControllerTypeRecommended; }
+    KGraphicsControllerType graphicsControllerTypeRecommended() const;
     /** Returns current graphics controller type. */
     KGraphicsControllerType graphicsControllerTypeCurrent() const;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIGraphicsControllerEditor.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIGraphicsControllerEditor.cpp	(revision 82435)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIGraphicsControllerEditor.cpp	(revision 82436)
@@ -23,6 +23,10 @@
 /* GUI includes: */
 #include "QIComboBox.h"
+#include "UICommon.h"
 #include "UIConverter.h"
 #include "UIGraphicsControllerEditor.h"
+
+/* COM includes: */
+#include "CSystemProperties.h"
 
 
@@ -41,6 +45,11 @@
     if (m_pCombo)
     {
-        /* Update cached value: */
-        m_enmValue = enmValue;
+        /* Update cached value and
+         * combo if value has changed: */
+        if (m_enmValue != enmValue)
+        {
+            m_enmValue = enmValue;
+            populateCombo();
+        }
 
         /* Look for proper index to choose: */
@@ -100,4 +109,6 @@
             {
                 setFocusProxy(m_pCombo->focusProxy());
+                /* This is necessary since contents is dynamical now: */
+                m_pCombo->setSizeAdjustPolicy(QComboBox::AdjustToContents);
                 if (m_pLabel)
                     m_pLabel->setBuddy(m_pCombo->focusProxy());
@@ -124,5 +135,24 @@
 void UIGraphicsControllerEditor::populateCombo()
 {
-    for (int i = 0; i < KGraphicsControllerType_Max; ++i)
-        m_pCombo->addItem(QString(), QVariant::fromValue(static_cast<KGraphicsControllerType>(i)));
+    if (m_pCombo)
+    {
+        /* Clear combo first of all: */
+        m_pCombo->clear();
+
+        /* Load currently supported graphics controller types: */
+        CSystemProperties comProperties = uiCommon().virtualBox().GetSystemProperties();
+        m_supportedValues = comProperties.GetSupportedGraphicsControllerTypes();
+
+        /* Make sure requested value if sane is present as well: */
+        if (   m_enmValue != KGraphicsControllerType_Max
+            && !m_supportedValues.contains(m_enmValue))
+            m_supportedValues.prepend(m_enmValue);
+
+        /* Update combo with all the supported values: */
+        foreach (const KGraphicsControllerType &enmType, m_supportedValues)
+            m_pCombo->addItem(QString(), QVariant::fromValue(enmType));
+
+        /* Retranslate finally: */
+        retranslateUi();
+    }
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIGraphicsControllerEditor.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIGraphicsControllerEditor.h	(revision 82435)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIGraphicsControllerEditor.h	(revision 82436)
@@ -57,4 +57,7 @@
     KGraphicsControllerType value() const;
 
+    /** Returns the vector of supported values. */
+    QVector<KGraphicsControllerType> supportedValues() const { return m_supportedValues; }
+
 protected:
 
@@ -80,4 +83,7 @@
     KGraphicsControllerType  m_enmValue;
 
+    /** Holds the vector of supported values. */
+    QVector<KGraphicsControllerType>  m_supportedValues;
+
     /** Holds the label instance. */
     QLabel     *m_pLabel;
