Index: /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest.cpp	(revision 53433)
+++ /trunk/src/VBox/Additions/common/VBoxGuest/VBoxGuest.cpp	(revision 53434)
@@ -2319,4 +2319,6 @@
             }
         }
+        else
+            rc = pInfo->result;
         if (pcbDataReturned)
             *pcbDataReturned = sizeof(*pInfo);
Index: /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibGuestProp.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibGuestProp.cpp	(revision 53433)
+++ /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibGuestProp.cpp	(revision 53434)
@@ -121,4 +121,5 @@
  *
  * @returns VBox status code
+ * @returns VERR_NOT_SUPPORTED if guest properties are not available on the host.
  * @param   pu32ClientId    Where to put the client id on success. The client id
  *                          must be passed to all the other calls to the service.
@@ -139,4 +140,6 @@
         if (RT_SUCCESS(rc))
             *pu32ClientId = Info.u32ClientID;
+        if (rc == VERR_NOT_IMPLEMENTED || rc == VERR_HGCM_SERVICE_NOT_FOUND)
+            rc = VERR_NOT_SUPPORTED;
     }
     return rc;
Index: /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibVideo.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibVideo.cpp	(revision 53433)
+++ /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibVideo.cpp	(revision 53434)
@@ -305,4 +305,5 @@
  *
  * @returns iprt status value
+ * @returns VERR_NOT_SUPPORTED if the guest property service is not available.
  * @param   pcScreen   where to store the virtual screen number
  */
@@ -343,5 +344,5 @@
     return rc;
 #else /* !VBOX_WITH_GUEST_PROPS */
-    return VERR_NOT_IMPLEMENTED;
+    return VERR_NOT_SUPPORTED;
 #endif /* !VBOX_WITH_GUEST_PROPS */
 }
@@ -404,5 +405,5 @@
     return rc;
 #else /* !VBOX_WITH_GUEST_PROPS */
-    return VERR_NOT_IMPLEMENTED;
+    return VERR_NOT_SUPPORTED;
 #endif /* !VBOX_WITH_GUEST_PROPS */
 }
@@ -488,5 +489,5 @@
     return rc;
 #else /* !VBOX_WITH_GUEST_PROPS */
-    return VERR_NOT_IMPLEMENTED;
+    return VERR_NOT_SUPPORTED;
 #endif /* !VBOX_WITH_GUEST_PROPS */
 }
Index: /trunk/src/VBox/Additions/x11/VBoxClient/display.cpp
===================================================================
--- /trunk/src/VBox/Additions/x11/VBoxClient/display.cpp	(revision 53433)
+++ /trunk/src/VBox/Additions/x11/VBoxClient/display.cpp	(revision 53434)
@@ -207,20 +207,25 @@
     LogRelFlowFunc(("\n"));
     rc = VbglR3VideoModeGetHighestSavedScreen(&cScreens);
-    if (RT_FAILURE(rc))
+    if (rc != VINF_SUCCESS && rc != VERR_NOT_SUPPORTED)
         VBClFatalError(("Failed to get the number of saved screen modes, rc=%Rrc\n",
                     rc));
-    for (i = 0; i < RT_MAX(cScreens + 1, 8); ++i)
-    {
-        unsigned cx = 0, cy = 0, cBPP = 0, x = 0, y = 0;
-        bool fEnabled = true;
-
-        rc = VbglR3RetrieveVideoMode(i, &cx, &cy, &cBPP, &x, &y,
-                                     &fEnabled);
-        if (RT_SUCCESS(rc) && i > cScreens) /* Sanity */
-            VBClFatalError(("Internal error retrieving the number of saved screen modes.\n"));
-        if (RT_SUCCESS(rc))
-            setModeX11(pState, cx, cy, cBPP, i, x, y, fEnabled,
-                       true);
-    }
+    if (rc == VINF_SUCCESS)
+        /* The "8" is to sanity test that VbglR3VideoModeGetHighestSavedScreen()
+         * worked right. */
+        for (i = 0; i < RT_MAX(cScreens + 1, 8); ++i)
+        {
+            unsigned cx = 0, cy = 0, cBPP = 0, x = 0, y = 0;
+            bool fEnabled = true;
+
+            rc = VbglR3RetrieveVideoMode(i, &cx, &cy, &cBPP, &x, &y,
+                                         &fEnabled);
+            /* Sanity test. */
+            if (   (rc != VINF_SUCCESS && rc != VERR_NOT_FOUND)
+                || (i > cScreens && rc != VERR_NOT_FOUND))
+                VBClFatalError(("Internal error retrieving the number of saved screen modes.\n"));
+            if (rc == VINF_SUCCESS)
+                setModeX11(pState, cx, cy, cBPP, i, x, y, fEnabled,
+                           true);
+        }
     while (true)
     {
@@ -261,13 +266,11 @@
                                                &fChangeOrigin, true);
             /* Extended display version not supported on host */
-            if (RT_FAILURE(rc))
+            if (rc != VINF_SUCCESS)
                 VBClFatalError(("Failed to get display change request, rc=%Rrc\n",
                                 rc));
             else
-                LogRelFlowFunc(("Got extended size hint from host cx=%d, cy=%d, bpp=%d, iDisplay=%d, x=%d, y=%d fEnabled=%d\n",
+                LogRelFlowFunc(("Got size hint from host cx=%d, cy=%d, bpp=%d, iDisplay=%d, x=%d, y=%d fEnabled=%d\n",
                                 cx, cy, cBPP, iDisplay, x, y,
                                 fEnabled));
-            if (RT_FAILURE(rc))
-                VBClFatalError(("Failed to retrieve size hint, rc=%Rrc\n", rc));
             if (iDisplay > INT32_MAX)
                 VBClFatalError(("Received a size hint for too high display number %u\n",
@@ -280,7 +283,5 @@
                 rc = VbglR3SaveVideoMode(iDisplay, cx, cy, cBPP, x, y,
                                          fEnabled);
-                if (   RT_FAILURE(rc)
-                    && rc != VERR_HGCM_SERVICE_NOT_FOUND
-                    && rc != VERR_NOT_IMPLEMENTED /* No HGCM */)
+                if (RT_FAILURE(rc) && rc != VERR_NOT_SUPPORTED)
                     VBClFatalError(("Failed to save size hint, rc=%Rrc\n", rc));
             }
