Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 74871)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 74872)
@@ -3986,8 +3986,12 @@
 }
 
-double UIExtraDataManager::scaleFactor(const QString &strID, const int uScreenIndex)
-{
-    /* Get corresponding extra-data: */
-    const QStringList data = extraDataStringList(GUI_ScaleFactor, strID);
+double UIExtraDataManager::scaleFactor(const int uScreenIndex, const QString &strID /* = GlobalID */)
+{
+    /* Get corresponding extra-data for this machine: */
+    QStringList data = extraDataStringList(GUI_ScaleFactor, strID);
+
+    /* If that fails check the global scale factor: */
+    if (data.size() == 0)
+        data = extraDataStringList(GUI_ScaleFactor, GlobalID);
 
     /* 1.0 is default scale factor: */
@@ -4007,8 +4011,21 @@
 }
 
-QList<double> UIExtraDataManager::scaleFactors(const QString &strID)
-{
+QList<double> UIExtraDataManager::scaleFactors(const QString &strID /* = GlobalID */)
+{
+    /* Look for the scale factor for this machine first: */
+    QStringList data = extraDataStringList(GUI_ScaleFactor, strID);
+
+    /* then looks for the global scale factors: */
+    if (data.size() == 0)
+        data = extraDataStringList(GUI_ScaleFactor, GlobalID);
+
     QList<double> scaleFactorList;
-    const QStringList data = extraDataStringList(GUI_ScaleFactor, strID);
+    /* 1.0 is default scale factor: */
+    if (data.size() == 0)
+    {
+        scaleFactorList.append(1.0);
+        return scaleFactorList;
+    }
+
     bool fOk = false;
     double scaleFactor;
@@ -4023,5 +4040,5 @@
 }
 
-void UIExtraDataManager::setScaleFactor(double dScaleFactor, const QString &strID, const int uScreenIndex)
+void UIExtraDataManager::setScaleFactor(double dScaleFactor, const int uScreenIndex, const QString &strID /* = GlobalID */)
 {
     QStringList data = extraDataStringList(GUI_ScaleFactor, strID);
@@ -4040,5 +4057,5 @@
 }
 
-void UIExtraDataManager::setScaleFactors(const QList<double> &scaleFactors, const QString &strID)
+void UIExtraDataManager::setScaleFactors(const QList<double> &scaleFactors, const QString &strID /* = GlobalID */)
 {
     QStringList data;
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 74871)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 74872)
@@ -605,9 +605,9 @@
 
         /** Returns the scale-factor. */
-        double scaleFactor(const QString &strID, const int uScreenIndex);
-        QList<double> scaleFactors(const QString &strID);
+        double scaleFactor(const int uScreenIndex, const QString &strID = GlobalID);
+        QList<double> scaleFactors(const QString &strID = GlobalID);
         /** Defines the @a dScaleFactor. */
-        void setScaleFactor(double dScaleFactor, const QString &strID, const int uScreenIndex);
-        void setScaleFactors(const QList<double> &scaleFactors, const QString &strID);
+        void setScaleFactor(double dScaleFactor, const int uScreenIndex, const QString &strID = GlobalID);
+        void setScaleFactors(const QList<double> &scaleFactors, const QString &strID = GlobalID);
 
         /** Returns the scaling optimization type. */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolRuntime.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolRuntime.cpp	(revision 74871)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolRuntime.cpp	(revision 74872)
@@ -3157,5 +3157,5 @@
     /* Change scale-factor directly: */
     const double dScaleFactor = pAction->property("Requested Scale Factor").toDouble();
-    gEDataManager->setScaleFactor(dScaleFactor, vboxGlobal().managedVMUuid(), 0);
+    gEDataManager->setScaleFactor(dScaleFactor, 0, vboxGlobal().managedVMUuid());
 }
 
@@ -3783,5 +3783,5 @@
 
         /* Get current scale-factor: */
-        const double dCurrentScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid(), 0);
+        const double dCurrentScaleFactor = gEDataManager->scaleFactor(0, vboxGlobal().managedVMUuid());
 
         /* Get device-pixel-ratio: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp	(revision 74871)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp	(revision 74872)
@@ -248,5 +248,5 @@
 {
     /* Acquire selected scale-factor: */
-    double dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid(), m_uScreenId);
+    double dScaleFactor = gEDataManager->scaleFactor(m_uScreenId, vboxGlobal().managedVMUuid());
 
     /* Take the device-pixel-ratio into account: */
@@ -508,5 +508,5 @@
 
     /* Acquire selected scale-factor: */
-    double dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid(), m_uScreenId);
+    double dScaleFactor = gEDataManager->scaleFactor(m_uScreenId, vboxGlobal().managedVMUuid());
 
     /* Take the device-pixel-ratio into account: */
@@ -702,5 +702,5 @@
 
         /* Acquire selected scale-factor: */
-        double dScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid(), m_uScreenId);
+        double dScaleFactor = gEDataManager->scaleFactor(m_uScreenId, vboxGlobal().managedVMUuid());
 
         /* Take the device-pixel-ratio into account: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.cpp	(revision 74871)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.cpp	(revision 74872)
@@ -21,4 +21,5 @@
 
 /* GUI includes: */
+# include "UIDesktopWidgetWatchdog.h"
 # include "UIExtraDataManager.h"
 # include "UIGlobalSettingsDisplay.h"
@@ -45,4 +46,5 @@
                && (m_maxGuestResolution == other.m_maxGuestResolution)
                && (m_fActivateHoveredMachineWindow == other.m_fActivateHoveredMachineWindow)
+               && (m_scaleFactors == other.m_scaleFactors)
                ;
     }
@@ -59,4 +61,6 @@
     /** Holds whether we should automatically activate machine window under the mouse cursor. */
     bool m_fActivateHoveredMachineWindow;
+    /** Holds the guest screen scale-factor. */
+    QList<double> m_scaleFactors;
 };
 
@@ -91,4 +95,5 @@
         oldDisplayData.m_maxGuestResolution = gEDataManager->maxGuestResolutionForPolicyFixed();
     oldDisplayData.m_fActivateHoveredMachineWindow = gEDataManager->activateHoveredMachineWindow();
+    oldDisplayData.m_scaleFactors = gEDataManager->scaleFactors();
 
     /* Cache old display data: */
@@ -112,4 +117,6 @@
     }
     m_pCheckBoxActivateOnMouseHover->setChecked(oldDisplayData.m_fActivateHoveredMachineWindow);
+    m_pScaleFactorEditor->setScaleFactors(oldDisplayData.m_scaleFactors);
+    m_pScaleFactorEditor->setMonitorCount(gpDesktop->screenCount());
 }
 
@@ -124,4 +131,5 @@
         newDisplayData.m_maxGuestResolution = QSize(m_pResolutionWidthSpin->value(), m_pResolutionHeightSpin->value());
     newDisplayData.m_fActivateHoveredMachineWindow = m_pCheckBoxActivateOnMouseHover->isChecked();
+    newDisplayData.m_scaleFactors = m_pScaleFactorEditor->scaleFactors();
 
     /* Cache new display data: */
@@ -258,7 +266,9 @@
         if (fSuccess && newDisplayData.m_fActivateHoveredMachineWindow != oldDisplayData.m_fActivateHoveredMachineWindow)
             gEDataManager->setActivateHoveredMachineWindow(newDisplayData.m_fActivateHoveredMachineWindow);
+        /* Save guest-screen scale-factor: */
+        if (fSuccess && newDisplayData.m_scaleFactors != oldDisplayData.m_scaleFactors)
+            gEDataManager->setScaleFactors(newDisplayData.m_scaleFactors);
     }
     /* Return result: */
     return fSuccess;
 }
-
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.ui
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.ui	(revision 74871)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/global/UIGlobalSettingsDisplay.ui	(revision 74872)
@@ -120,5 +120,35 @@
     </widget>
    </item>
-   <item row="4" column="0" colspan="2">
+   <item row="4" column="0">
+     <widget class="QLabel" name="m_pLabelGuestScreenScaleFactorEditor">
+       <property name="text">
+         <string>Scale Factor:</string>
+       </property>
+       <property name="alignment">
+         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+     </widget>
+   </item>
+   <item row="4" column="1" rowspan="2" colspan="2">
+     <layout class="QGridLayout" name="m_pLayoutGuestScreenScaleFactorEditor">
+       <property name="spacing">
+         <number>0</number>
+       </property>
+       <item row="0" column="0" rowspan="2" colspan="3">
+         <widget class="UIScaleFactorEditor" name="m_pScaleFactorEditor">
+           <property name="sizePolicy">
+             <sizepolicy hsizetype="Expanding" >
+               <horstretch>0</horstretch>
+               <verstretch>0</verstretch>
+             </sizepolicy>
+           </property>
+           <property name="whatsThis">
+             <string>Controls the guest screen scale factor.</string>
+           </property>
+         </widget>
+       </item>
+     </layout>
+   </item>
+   <item row="6" column="0" colspan="2">
     <spacer>
      <property name="orientation">
@@ -135,4 +165,11 @@
   </layout>
  </widget>
+ <customwidgets>
+   <customwidget>
+     <class>UIScaleFactorEditor</class>
+     <extends>QWidget</extends>
+     <header>UIScaleFactorEditor.h</header>
+   </customwidget>
+ </customwidgets>
  <resources/>
  <connections/>
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.ui
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.ui	(revision 74871)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.ui	(revision 74872)
@@ -156,5 +156,5 @@
            </widget>
           </item>
-          <item row="4" column="1" rowspan="1" colspan="2">
+          <item row="4" column="1" rowspan="2" colspan="2">
            <layout class="QGridLayout" name="m_pLayoutGuestScreenScaleFactorEditor">
             <property name="spacing">
