diff --git a/src/Fl_cocoa.mm b/src/Fl_cocoa.mm
index a045d07ea3a73ab3744762c0329c9214a0ac2f1b..9468e8ce293780f4c52dfa91ec3d5312ad8dfc64 100644
--- a/src/Fl_cocoa.mm
+++ b/src/Fl_cocoa.mm
@@ -1419,7 +1419,8 @@ static FLWindowDelegate *flwindowdelegate_instance = nil;
   }
 #endif
   if (!window->parent() && window->border() && Fl_Window_Driver::driver(window)->is_resizable()) {
-    Fl_Cocoa_Window_Driver::driver(window)->is_maximized([nsw isZoomed]);
+    Fl_Cocoa_Window_Driver::driver(window)->is_maximized([nsw isZoomed] &&
+                                                         !window->fullscreen_active());
   }
   fl_unlock_function();
 }
@@ -3332,8 +3333,11 @@ void Fl_Cocoa_Window_Driver::fullscreen_on() {
     FLWindow *nswin = fl_xid(pWindow);
 #  if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_7
     if (fl_mac_os_version >= 100700 && (nswin.styleMask & NSWindowStyleMaskFullScreen)) {
-      // from single-screen fullscreen to "All Screens" fullscreen
+      // from single-screen fullscreen to "All Screens" fullscreen, with border
+      bool allscreens_on = (nswin.collectionBehavior & NSWindowCollectionBehaviorFullScreenNone);
+      if (allscreens_on) nswin.collectionBehavior &= ~NSWindowCollectionBehaviorFullScreenNone;
       [nswin toggleFullScreen:nil];
+      if (allscreens_on) nswin.collectionBehavior |= NSWindowCollectionBehaviorFullScreenNone;
       if (*no_fullscreen_w() == 0) {
         *no_fullscreen_x() = x();
         *no_fullscreen_y() = y();