Index: /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 74700)
+++ /trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk	(revision 74701)
@@ -945,4 +945,5 @@
 	src/widgets/UIPortForwardingTable.h \
 	src/widgets/UIProgressDialog.h \
+	src/widgets/UIScaleFactorEditor.h \
 	src/widgets/UISlidingToolBar.h \
 	src/widgets/UISpecialControls.h \
@@ -1173,4 +1174,5 @@
 	src/widgets/UIPortForwardingTable.h \
 	src/widgets/UIProgressDialog.h \
+	src/widgets/UIScaleFactorEditor.h \
 	src/widgets/UISlidingToolBar.h \
 	src/widgets/UISpecialControls.h \
@@ -1672,4 +1674,5 @@
 	src/widgets/UIPortForwardingTable.cpp \
 	src/widgets/UIProgressDialog.cpp \
+	src/widgets/UIScaleFactorEditor.cpp \
 	src/widgets/UISlidingToolBar.cpp \
 	src/widgets/UISpecialControls.cpp \
@@ -1958,4 +1961,5 @@
 	src/widgets/UIPortForwardingTable.cpp \
 	src/widgets/UIProgressDialog.cpp \
+	src/widgets/UIScaleFactorEditor.cpp \
 	src/widgets/UISlidingToolBar.cpp \
 	src/widgets/UISpecialControls.cpp \
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 74700)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 74701)
@@ -3970,8 +3970,8 @@
 }
 
-double UIExtraDataManager::scaleFactor(const QString &strID)
+double UIExtraDataManager::scaleFactor(const QString &strID, const int uScreenIndex /* = 0 */)
 {
     /* Get corresponding extra-data value: */
-    const QString strValue = extraDataString(GUI_ScaleFactor, strID);
+    const QString strValue = extraDataString(extraDataKeyPerScreen(GUI_ScaleFactor, uScreenIndex), strID);
 
     /* Try to convert loaded data to double: */
@@ -3987,8 +3987,8 @@
 }
 
-void UIExtraDataManager::setScaleFactor(double dScaleFactor, const QString &strID)
+void UIExtraDataManager::setScaleFactor(double dScaleFactor, const QString &strID, const int uScreenIndex /* = 0 */)
 {
     /* Set corresponding extra-data value: */
-    setExtraDataString(GUI_ScaleFactor, QString::number(dScaleFactor), strID);
+    setExtraDataString(extraDataKeyPerScreen(GUI_ScaleFactor, uScreenIndex), QString::number(dScaleFactor), strID);
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 74700)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 74701)
@@ -597,7 +597,7 @@
 
         /** Returns the scale-factor. */
-        double scaleFactor(const QString &strID);
+        double scaleFactor(const QString &strID, const int uScreenIndex = 0);
         /** Defines the @a dScaleFactor. */
-        void setScaleFactor(double dScaleFactor, const QString &strID);
+        void setScaleFactor(double dScaleFactor, const QString &strID, const int uScreenIndex = 0);
 
         /** Returns the scaling optimization type. */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 74700)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.cpp	(revision 74701)
@@ -409,4 +409,7 @@
     /* Load old 'Screen' data from the cache: */
     m_pEditorVideoScreenCount->setValue(oldDisplayData.m_cGuestScreenCount);
+    m_pScaleFactorEditor->setMonitorCount(oldDisplayData.m_cGuestScreenCount);
+    m_pScaleFactorEditor->hide();
+    m_pLabelGuestScreenScaleFactorEditor->hide();
     m_pEditorGuestScreenScale->setValue((int)(oldDisplayData.m_dScaleFactor * 100));
     m_pCheckbox3D->setChecked(oldDisplayData.m_f3dAccelerationEnabled);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.ui
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.ui	(revision 74700)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/machine/UIMachineSettingsDisplay.ui	(revision 74701)
@@ -203,4 +203,28 @@
           </item>
           <item row="6" 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="6" 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="whatsThis">
+               <string>Controls the guest screen scale factor.</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
+          </item>
+          <item row="8" column="0">
            <widget class="QLabel" name="m_pLabelVideoOptions">
             <property name="text">
@@ -212,5 +236,5 @@
            </widget>
           </item>
-          <item row="6" column="1">
+          <item row="8" column="1">
            <widget class="QCheckBox" name="m_pCheckbox3D">
             <property name="sizePolicy">
@@ -228,5 +252,5 @@
            </widget>
           </item>
-          <item row="7" column="1">
+          <item row="9" column="1">
            <widget class="QCheckBox" name="m_pCheckbox2DVideo">
             <property name="sizePolicy">
@@ -801,4 +825,9 @@
    <header>UIFilmContainer.h</header>
   </customwidget>
+  <customwidget>
+   <class>UIScaleFactorEditor</class>
+   <extends>QWidget</extends>
+   <header>UIScaleFactorEditor.h</header>
+  </customwidget>
  </customwidgets>
  <resources/>
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIScaleFactorEditor.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIScaleFactorEditor.cpp	(revision 74701)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIScaleFactorEditor.cpp	(revision 74701)
@@ -0,0 +1,121 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIScaleFactorEditor class implementation.
+ */
+
+/*
+ * Copyright (C) 2009-2017 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifdef VBOX_WITH_PRECOMPILED_HEADERS
+# include <precomp.h>
+#else  /* !VBOX_WITH_PRECOMPILED_HEADERS */
+
+/* Qt includes: */
+#include <QComboBox>
+#include <QGridLayout>
+#include <QSpinBox>
+# include <QWidget>
+
+/* GUI includes: */
+#include "QIAdvancedSlider.h"
+#include "UIScaleFactorEditor.h"
+
+#endif /* !VBOX_WITH_PRECOMPILED_HEADERS */
+
+
+UIScaleFactorEditor::UIScaleFactorEditor(QWidget *pParent)
+    : QIWithRetranslateUI<QWidget>(pParent)
+    , m_pScaleSpinBox(0)
+    , m_pMainLayout(0)
+    , m_pMonitorComboBox(0)
+{
+    /* Prepare: */
+    prepare();
+}
+
+void UIScaleFactorEditor::prepare()
+{
+    setStyleSheet("background-color:yellow;");
+
+    m_pMainLayout = new QGridLayout;
+    if (!m_pMainLayout)
+        return;
+    m_pMonitorComboBox = new QComboBox;
+    if (m_pMonitorComboBox)
+    {
+        m_pMainLayout->addWidget(m_pMonitorComboBox, 0, 0);
+    }
+    m_pScaleSpinBox = new QSpinBox;
+    if (m_pScaleSpinBox)
+    {
+        m_pMainLayout->addWidget(m_pScaleSpinBox, 0, 2);
+        m_pScaleSpinBox->setMinimum(100);
+        m_pScaleSpinBox->setMaximum(200);
+        connect(m_pScaleSpinBox ,static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
+                this, &UIScaleFactorEditor::sltScaleSpinBoxValueChanged);
+    }
+
+    m_pScaleSlider = new QIAdvancedSlider;
+    {
+        m_pMainLayout->addWidget(m_pScaleSlider, 0, 1);
+        m_pScaleSlider->setMinimum(100);
+        m_pScaleSlider->setMaximum(200);
+        m_pScaleSlider->setPageStep(10);
+        m_pScaleSlider->setSingleStep(1);
+        m_pScaleSlider->setTickInterval(10);
+        m_pScaleSlider->setSnappingEnabled(true);
+        connect(m_pScaleSlider, static_cast<void(QIAdvancedSlider::*)(int)>(&QIAdvancedSlider::valueChanged),
+                this, &UIScaleFactorEditor::sltScaleSliderValueChanged);
+    }
+    setLayout(m_pMainLayout);
+}
+
+void UIScaleFactorEditor::setMonitorCount(int iMonitorCount)
+{
+    if (!m_pMonitorComboBox)
+        return;
+    if (iMonitorCount == m_pMonitorComboBox->count())
+        return;
+
+    m_pMonitorComboBox->blockSignals(true);
+    m_pMonitorComboBox->clear();
+    for (int i = 0; i < iMonitorCount; ++i)
+    {
+        m_pMonitorComboBox->addItem(QString("Monitor %1").arg(i));
+
+    }
+    m_pMonitorComboBox->blockSignals(false);
+}
+
+void UIScaleFactorEditor::sltScaleSpinBoxValueChanged(int value)
+{
+    if (m_pScaleSlider && value != m_pScaleSlider->value())
+    {
+        m_pScaleSlider->blockSignals(true);
+        m_pScaleSlider->setValue(value);
+        m_pScaleSlider->blockSignals(false);
+    }
+}
+
+void UIScaleFactorEditor::sltScaleSliderValueChanged(int value)
+{
+    if (m_pScaleSpinBox && value != m_pScaleSpinBox->value())
+    {
+        m_pScaleSpinBox->blockSignals(true);
+        m_pScaleSpinBox->setValue(value);
+        m_pScaleSpinBox->blockSignals(false);
+    }
+}
+
+void UIScaleFactorEditor::retranslateUi()
+{
+}
Index: /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIScaleFactorEditor.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIScaleFactorEditor.h	(revision 74701)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/widgets/UIScaleFactorEditor.h	(revision 74701)
@@ -0,0 +1,66 @@
+/* $Id$ */
+/** @file
+ * VBox Qt GUI - UIScaleFactorEditor class declaration.
+ */
+
+/*
+ * Copyright (C) 2009-2017 Oracle Corporation
+ *
+ * This file is part of VirtualBox Open Source Edition (OSE), as
+ * available from http://www.virtualbox.org. This file is free software;
+ * you can redistribute it and/or modify it under the terms of the GNU
+ * General Public License (GPL) as published by the Free Software
+ * Foundation, in version 2 as it comes in the "COPYING" file of the
+ * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
+ * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
+ */
+
+#ifndef ___UIScaleFactorEditor_h___
+#define ___UIScaleFactorEditor_h___
+
+/* Qt includes: */
+//# include <QWidget>
+
+/* GUI includes: */
+#include "QIWithRetranslateUI.h"
+#include "UILibraryDefs.h"
+
+
+/* Forward declarations: */
+class QComboBox;
+class QGridLayout;
+class QSpinBox;
+class QWidget;
+class QIAdvancedSlider;
+
+/** QWidget reimplementation
+ * providing GUI with monitor scale factor editing functionality. */
+class SHARED_LIBRARY_STUFF UIScaleFactorEditor : public QIWithRetranslateUI<QWidget>
+{
+    Q_OBJECT;
+
+signals:
+    void sigScaleFactorChanged(int iMonitorID, double scaleFactor);
+
+public:
+
+    /** Constructor, passes @a pParent to the QWidget constructor.*/
+    UIScaleFactorEditor(QWidget *pParent);
+    void setMonitorCount(int iMonitorCount);
+
+protected:
+    virtual void retranslateUi() /* override */;
+
+private slots:
+    void sltScaleSpinBoxValueChanged(int value);
+    void sltScaleSliderValueChanged(int value);
+
+private:
+    void prepare();
+    QSpinBox          *m_pScaleSpinBox;
+    QGridLayout       *m_pMainLayout;
+    QComboBox         *m_pMonitorComboBox;
+    QIAdvancedSlider  *m_pScaleSlider;
+};
+
+#endif /* !___UIScaleFactorEditor_h___ */
