Index: trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp	(revision 56703)
+++ trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.cpp	(revision 56704)
@@ -112,4 +112,5 @@
 #endif /* Q_WS_X11 */
 const char* UIExtraDataDefs::GUI_AutoresizeGuest = "GUI/AutoresizeGuest";
+const char* UIExtraDataDefs::GUI_LastVisibilityStatusForGuestScreen = "GUI/LastVisibilityStatusForGuestScreen";
 const char* UIExtraDataDefs::GUI_LastGuestSizeHint = "GUI/LastGuestSizeHint";
 const char* UIExtraDataDefs::GUI_VirtualScreenToHostScreen = "GUI/VirtualScreenToHostScreen";
Index: trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 56703)
+++ trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h	(revision 56704)
@@ -190,4 +190,7 @@
         extern const char* GUI_AutoresizeGuest;
         /** Prefix used by composite extra-data keys,
+          * which holds last guest-screen visibility status per screen-index. */
+        extern const char* GUI_LastVisibilityStatusForGuestScreen;
+        /** Prefix used by composite extra-data keys,
           * which holds last guest-screen size-hint per screen-index. */
         extern const char* GUI_LastGuestSizeHint;
Index: trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 56703)
+++ trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 56704)
@@ -1777,5 +1777,5 @@
            << GUI_Fullscreen_LegacyMode
 #endif /* Q_WS_X11 */
-           << GUI_AutoresizeGuest << GUI_LastGuestSizeHint
+           << GUI_AutoresizeGuest << GUI_LastVisibilityStatusForGuestScreen << GUI_LastGuestSizeHint
            << GUI_VirtualScreenToHostScreen << GUI_AutomountGuestScreens
 #ifdef VBOX_WITH_VIDEOHWACCEL
@@ -3070,4 +3070,28 @@
     /* 'False' if feature restricted, null-string otherwise: */
     setExtraDataString(GUI_AutoresizeGuest, toFeatureRestricted(!fEnabled), strID);
+}
+
+bool UIExtraDataManager::lastGuestScreenVisibilityStatus(ulong uScreenIndex, const QString &strID)
+{
+    /* Not for primary screen: */
+    AssertReturn(uScreenIndex > 0, true);
+
+    /* Compose corresponding key: */
+    const QString strKey = extraDataKeyPerScreen(GUI_LastVisibilityStatusForGuestScreen, uScreenIndex);
+
+    /* 'False' unless feature allowed: */
+    return isFeatureAllowed(strKey, strID);
+}
+
+void UIExtraDataManager::setLastGuestScreenVisibilityStatus(ulong uScreenIndex, bool fEnabled, const QString &strID)
+{
+    /* Not for primary screen: */
+    AssertReturnVoid(uScreenIndex > 0);
+
+    /* Compose corresponding key: */
+    const QString strKey = extraDataKeyPerScreen(GUI_LastVisibilityStatusForGuestScreen, uScreenIndex);
+
+    /* 'True' if feature allowed, null-string otherwise: */
+    return setExtraDataString(strKey, toFeatureAllowed(fEnabled), strID);
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 56703)
+++ trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.h	(revision 56704)
@@ -379,4 +379,9 @@
         void setGuestScreenAutoResizeEnabled(bool fEnabled, const QString &strID);
 
+        /** Returns last guest-screen visibility status for screen with @a uScreenIndex. */
+        bool lastGuestScreenVisibilityStatus(ulong uScreenIndex, const QString &strID);
+        /** Defines whether last guest-screen visibility status was @a fEnabled for screen with @a uScreenIndex. */
+        void setLastGuestScreenVisibilityStatus(ulong uScreenIndex, bool fEnabled, const QString &strID);
+
         /** Returns last guest-screen size-hint for screen with @a uScreenIndex. */
         QSize lastGuestScreenSizeHint(ulong uScreenIndex, const QString &strID);
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp	(revision 56703)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.cpp	(revision 56704)
@@ -923,4 +923,14 @@
 }
 
+bool UIMachineView::guestScreenVisibilityStatus() const
+{
+    /* Always 'true' for primary guest-screen: */
+    if (m_uScreenId == 0)
+        return true;
+
+    /* Actual value for other guest-screens: */
+    return gEDataManager->lastGuestScreenVisibilityStatus(m_uScreenId, vboxGlobal().managedVMUuid());
+}
+
 QSize UIMachineView::guestScreenSizeHint() const
 {
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h	(revision 56703)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineView.h	(revision 56704)
@@ -210,4 +210,7 @@
     QSize maxGuestSize();
 
+    /** Retrieves the last guest-screen visibility status from extra-data. */
+    bool guestScreenVisibilityStatus() const;
+
     /** Retrieves the last guest-screen size-hint from extra-data. */
     QSize guestScreenSizeHint() const;
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 56703)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 56704)
@@ -1937,13 +1937,20 @@
 bool UISession::isScreenVisible(ulong uScreenId) const
 {
-    Assert(uScreenId < (ulong)m_monitorVisibilityVector.size());
-    return m_monitorVisibilityVector.value((int)uScreenId, false);
+    /* Make sure index feats the bounds: */
+    AssertReturn(uScreenId < (ulong)m_monitorVisibilityVector.size(), false);
+
+    /* Return 'actual' visibility status: */
+    return m_monitorVisibilityVector.value((int)uScreenId);
 }
 
 void UISession::setScreenVisible(ulong uScreenId, bool fIsMonitorVisible)
 {
-    Assert(uScreenId < (ulong)m_monitorVisibilityVector.size());
-    if (uScreenId < (ulong)m_monitorVisibilityVector.size())
-        m_monitorVisibilityVector[(int)uScreenId] = fIsMonitorVisible;
+    /* Make sure index feats the bounds: */
+    AssertReturnVoid(uScreenId < (ulong)m_monitorVisibilityVector.size());
+
+    /* Remember 'actual' visibility status: */
+    m_monitorVisibilityVector[(int)uScreenId] = fIsMonitorVisible;
+    /* Remember 'desired' visibility status: */
+    gEDataManager->setLastGuestScreenVisibilityStatus(uScreenId, fIsMonitorVisible, vboxGlobal().managedVMUuid());
 }
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineViewNormal.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineViewNormal.cpp	(revision 56703)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineViewNormal.cpp	(revision 56704)
@@ -159,5 +159,5 @@
     ///       Just let the guest start at the default 800x600?
     display().SetVideoModeHint(screenId(),
-                               true /* temporary decision */,
+                               guestScreenVisibilityStatus(),
                                false, 0, 0, sizeHint.width(), sizeHint.height(), 0);
 }
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineViewScale.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineViewScale.cpp	(revision 56703)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/scale/UIMachineViewScale.cpp	(revision 56704)
@@ -163,5 +163,5 @@
     /* Send saved size-hint to the guest: */
     display().SetVideoModeHint(screenId(),
-                               true /* temporary decision */,
+                               guestScreenVisibilityStatus(),
                                false, 0, 0, sizeHint.width(), sizeHint.height(), 0);
 }
