Index: trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 53404)
+++ trunk/src/VBox/Frontends/VirtualBox/src/converter/UIConverterBackendGlobal.cpp	(revision 53406)
@@ -578,4 +578,5 @@
         case UIExtraDataMetaDefs::RuntimeMenuViewActionType_StatusBarSettings: strResult = "StatusBarSettings"; break;
         case UIExtraDataMetaDefs::RuntimeMenuViewActionType_ToggleStatusBar:   strResult = "ToggleStatusBar"; break;
+        case UIExtraDataMetaDefs::RuntimeMenuViewActionType_ScaleFactor:       strResult = "ScaleFactor"; break;
         case UIExtraDataMetaDefs::RuntimeMenuViewActionType_Resize:            strResult = "Resize"; break;
         case UIExtraDataMetaDefs::RuntimeMenuViewActionType_Multiscreen:       strResult = "Multiscreen"; break;
@@ -607,4 +608,5 @@
     keys << "StatusBarSettings"; values << UIExtraDataMetaDefs::RuntimeMenuViewActionType_StatusBarSettings;
     keys << "ToggleStatusBar";   values << UIExtraDataMetaDefs::RuntimeMenuViewActionType_ToggleStatusBar;
+    keys << "ScaleFactor";       values << UIExtraDataMetaDefs::RuntimeMenuViewActionType_ScaleFactor;
     keys << "Resize";            values << UIExtraDataMetaDefs::RuntimeMenuViewActionType_Resize;
     keys << "Multiscreen";       values << UIExtraDataMetaDefs::RuntimeMenuViewActionType_Multiscreen;
Index: trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 53404)
+++ trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 53406)
@@ -382,6 +382,7 @@
         RuntimeMenuViewActionType_StatusBarSettings = RT_BIT(9),
         RuntimeMenuViewActionType_ToggleStatusBar   = RT_BIT(10),
-        RuntimeMenuViewActionType_Resize            = RT_BIT(11),
-        RuntimeMenuViewActionType_Multiscreen       = RT_BIT(12),
+        RuntimeMenuViewActionType_ScaleFactor       = RT_BIT(11),
+        RuntimeMenuViewActionType_Resize            = RT_BIT(12),
+        RuntimeMenuViewActionType_Multiscreen       = RT_BIT(13),
         RuntimeMenuViewActionType_All               = 0xFFFF
     };
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp	(revision 53404)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.cpp	(revision 53406)
@@ -814,4 +814,28 @@
 };
 
+class UIActionMenuScaleFactor : public UIActionMenu
+{
+    Q_OBJECT;
+
+public:
+
+    UIActionMenuScaleFactor(UIActionPool *pParent)
+        : UIActionMenu(pParent) {}
+
+protected:
+
+    /** Returns action extra-data ID. */
+    virtual int extraDataID() const { return UIExtraDataMetaDefs::RuntimeMenuViewActionType_ScaleFactor; }
+    /** Returns action extra-data key. */
+    virtual QString extraDataKey() const { return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuViewActionType_ScaleFactor); }
+    /** Returns whether action is allowed. */
+    virtual bool isAllowed() const { return actionPool()->toRuntime()->isAllowedInMenuView(UIExtraDataMetaDefs::RuntimeMenuViewActionType_ScaleFactor); }
+
+    void retranslateUi()
+    {
+        setName(QApplication::translate("UIActionPool", "S&cale Factor"));
+    }
+};
+
 class UIActionMenuInput : public UIActionMenu
 {
@@ -1893,4 +1917,14 @@
     /* Update configuration: */
     updateConfiguration();
+}
+
+void UIActionPoolRuntime::sltHandleActionTriggerViewScaleFactor(QAction *pAction)
+{
+    /* Make sure sender is valid: */
+    AssertPtrReturnVoid(pAction);
+
+    /* Change scale-factor directly: */
+    const double dScaleFactor = pAction->property("Requested Scale Factor").toDouble();
+    gEDataManager->setScaleFactor(dScaleFactor, vboxGlobal().managedVMUuid());
 }
 
@@ -1986,4 +2020,5 @@
     m_pool[UIActionIndexRT_M_View_M_StatusBar_S_Settings] = new UIActionSimpleShowStatusBarSettingsWindow(this);
     m_pool[UIActionIndexRT_M_View_M_StatusBar_T_Visibility] = new UIActionToggleStatusBar(this);
+    m_pool[UIActionIndexRT_M_View_M_ScaleFactor] = new UIActionMenuScaleFactor(this);
 
     /* 'Input' actions: */
@@ -2042,4 +2077,5 @@
     m_menuUpdateHandlers[UIActionIndexRT_M_View_M_MenuBar].ptfr =          &UIActionPoolRuntime::updateMenuViewMenuBar;
     m_menuUpdateHandlers[UIActionIndexRT_M_View_M_StatusBar].ptfr =        &UIActionPoolRuntime::updateMenuViewStatusBar;
+    m_menuUpdateHandlers[UIActionIndexRT_M_View_M_ScaleFactor].ptfr =      &UIActionPoolRuntime::updateMenuViewScaleFactor;
     m_menuUpdateHandlers[UIActionIndexRT_M_Input].ptfr =                   &UIActionPoolRuntime::updateMenuInput;
     m_menuUpdateHandlers[UIActionIndexRT_M_Input_M_Keyboard].ptfr =        &UIActionPoolRuntime::updateMenuInputKeyboard;
@@ -2322,4 +2358,8 @@
     }
 
+    /* 'Scale Factor' submenu: */
+    fSeparator = addAction(pMenu, action(UIActionIndexRT_M_View_M_ScaleFactor)) || fSeparator;
+    updateMenuViewScaleFactor();
+
     /* Do we have to show resize or multiscreen menu? */
     const bool fAllowToShowActionResize = isAllowedInMenuView(UIExtraDataMetaDefs::RuntimeMenuViewActionType_Resize);
@@ -2379,4 +2419,8 @@
     }
 
+    /* 'Scale Factor' submenu: */
+    fSeparator = addAction(pMenu, action(UIActionIndexRT_M_View_M_ScaleFactor)) || fSeparator;
+    updateMenuViewScaleFactor();
+
     /* Do we have to show resize menu? */
     const bool fAllowToShowActionResize = isAllowedInMenuView(UIExtraDataMetaDefs::RuntimeMenuViewActionType_Resize);
@@ -2429,4 +2473,53 @@
     /* Mark menu as valid: */
     m_invalidations.remove(UIActionIndexRT_M_View_M_StatusBar);
+}
+
+void UIActionPoolRuntime::updateMenuViewScaleFactor()
+{
+    /* Get corresponding menu: */
+    UIMenu *pMenu = action(UIActionIndexRT_M_View_M_ScaleFactor)->menu();
+    AssertPtrReturnVoid(pMenu);
+    /* Clear contents: */
+    pMenu->clear();
+
+    /* Get corresponding scale-factor: */
+    const double dCurrentScaleFactor = gEDataManager->scaleFactor(vboxGlobal().managedVMUuid());
+
+    /* Prepare new contents: */
+    const QList<double> factors = QList<double>()
+                                  << 1.0
+                                  << 1.1
+                                  << 1.25
+                                  << 1.5
+                                  << 1.75
+                                  << 2.0;
+
+    /* Create exclusive 'scale-factor' action-group: */
+    QActionGroup *pActionGroup = new QActionGroup(pMenu);
+    AssertPtrReturnVoid(pActionGroup);
+    {
+        /* Configure exclusive 'scale-factor' action-group: */
+        pActionGroup->setExclusive(true);
+        /* For every available scale-factor: */
+        foreach (const double &dScaleFactor, factors)
+        {
+            /* Create exclusive 'scale-factor' action: */
+            QAction *pAction = pActionGroup->addAction(tr("%1%", "scale-factor")
+                                                          .arg(dScaleFactor * 100));
+            AssertPtrReturnVoid(pAction);
+            {
+                /* Configure exclusive 'scale-factor' action: */
+                pAction->setProperty("Requested Scale Factor", dScaleFactor);
+                pAction->setCheckable(true);
+                if (dScaleFactor == dCurrentScaleFactor)
+                    pAction->setChecked(true);
+            }
+        }
+        /* Insert group actions into menu: */
+        pMenu->addActions(pActionGroup->actions());
+        /* Install listener for exclusive action-group: */
+        connect(pActionGroup, SIGNAL(triggered(QAction*)),
+                this, SLOT(sltHandleActionTriggerViewScaleFactor(QAction*)));
+    }
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h	(revision 53404)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIActionPoolRuntime.h	(revision 53406)
@@ -68,4 +68,5 @@
     UIActionIndexRT_M_View_M_StatusBar_S_Settings,
     UIActionIndexRT_M_View_M_StatusBar_T_Visibility,
+    UIActionIndexRT_M_View_M_ScaleFactor,
 
     /* 'Input' menu actions: */
@@ -183,4 +184,7 @@
     void sltHandleConfigurationChange(const QString &strMachineID);
 
+    /** Handles 'View' : 'Scale Factor' menu : @a pAction trigger. */
+    void sltHandleActionTriggerViewScaleFactor(QAction *pAction);
+
     /** Prepare 'View' : 'Virtual Screen #' menu routine (Normal, Scale). */
     void sltPrepareMenuViewScreen();
@@ -227,4 +231,6 @@
     /** Update 'View' : 'Status Bar' menu routine. */
     void updateMenuViewStatusBar();
+    /** Update 'View' : 'Scale Factor' menu routine. */
+    void updateMenuViewScaleFactor();
     /** Update 'View' : 'Virtual Screen #' @a pMenu routine (Normal, Scale). */
     void updateMenuViewScreen(QMenu *pMenu);
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 53404)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp	(revision 53406)
@@ -898,4 +898,5 @@
     m_pRunningActions->addAction(actionPool()->action(UIActionIndexRT_M_View_T_GuestAutoresize));
     m_pRunningActions->addAction(actionPool()->action(UIActionIndexRT_M_View_S_AdjustWindow));
+    m_pRunningActions->addAction(actionPool()->action(UIActionIndexRT_M_View_M_ScaleFactor));
     m_pRunningActions->addAction(actionPool()->action(UIActionIndexRT_M_Input_S_TypeCAD));
 #ifdef Q_WS_X11
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMenuBarEditorWindow.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMenuBarEditorWindow.cpp	(revision 53404)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMenuBarEditorWindow.cpp	(revision 53406)
@@ -483,4 +483,5 @@
         prepareCopiedAction(pMenu, actionPool()->action(UIActionIndexRT_M_View_M_StatusBar));
         pMenu->addSeparator();
+        prepareCopiedAction(pMenu, actionPool()->action(UIActionIndexRT_M_View_M_ScaleFactor));
         prepareNamedAction(pMenu, tr("Virtual Screen Resize"),
                            UIExtraDataMetaDefs::RuntimeMenuViewActionType_Resize,
