--- a/hw/xquartz/X11Application.m
+++ b/hw/xquartz/X11Application.m
@@ -338,8 +338,7 @@ message_kit_thread(SEL selector, NSObjec
                     for_appkit = NO;
                     for_x = NO;
                 }
-                else if (!XQuartzIsRootless
-                         && ([e modifierFlags] & ALL_KEY_MASKS) ==
+                else if (([e modifierFlags] & ALL_KEY_MASKS) ==
                          (NSCommandKeyMask | NSAlternateKeyMask)
                          && ([e keyCode] == 0 /*a*/ || [e keyCode] ==
                              53 /*Esc*/)) {

--- a/hw/xquartz/darwinEvents.c
+++ b/hw/xquartz/darwinEvents.c
@@ -257,11 +257,7 @@ DarwinEventHandler(int screenNum, Intern
 
     case kXquartzToggleFullscreen:
         DEBUG_LOG("kXquartzToggleFullscreen\n");
-        if (XQuartzIsRootless)
-            ErrorF(
-                "Ignoring kXquartzToggleFullscreen because of rootless mode.");
-        else
-            QuartzRandRToggleFullscreen();
+        QuartzRandRToggleFullscreen();
         break;
 
     case kXquartzSetRootless:

--- a/hw/xquartz/quartzRandR.c
+++ b/hw/xquartz/quartzRandR.c
@@ -53,6 +53,7 @@
  */
 static Bool ignore_next_fake_mode_update = FALSE;
 
+QuartzModeInfoPtr *lastUsedMode;
 #define FAKE_REFRESH_ROOTLESS   1
 #define FAKE_REFRESH_FULLSCREEN 2
 
@@ -659,8 +660,7 @@ QuartzRandRToggleFullscreen(void)
             "Ignoring QuartzRandRToggleFullscreen because don't have a current mode set.\n");
     }
     else if (pQuartzScreen->currentMode.refresh == FAKE_REFRESH_ROOTLESS) {
-        ErrorF(
-            "Ignoring QuartzRandRToggleFullscreen because we are in rootless mode.\n");
+        QuartzRandRSetMode(pScreen, &lastUsedMode, TRUE);
     }
     else if (pQuartzScreen->currentMode.refresh == FAKE_REFRESH_FULLSCREEN) {
         /* Legacy fullscreen mode.  Hide/Show */
@@ -669,6 +669,7 @@ QuartzRandRToggleFullscreen(void)
     else {
         /* RandR fullscreen mode.  Return to default mode and hide if it is fullscreen. */
         if (XQuartzRootlessDefault) {
+            lastUsedMode = pQuartzScreen->currentMode;
             QuartzRandRSetFakeRootless();
         }
         else {
