Upstream commits ec1e32e1410f51c336e893ecfb56f728fdcc1a92,
bb4b6862f802c040ef67484942e91f7c3d88e649: fix hiding HUD
permanently when HUDless screenshot is taken.
diff --git config/setup.cfg config/setup.cfg
index 4edcf170..e6888f81 100644
--- config/setup.cfg
+++ config/setup.cfg
@@ -316,9 +316,19 @@ dobindsearch = [
     [search@[arg2]binds] $arg1 5 "^f{" "}" (? $textkeyseps (? $textkeyimages "|" ", ") (? $textkeyimages "" " ")) (? $textkeyseps (? $textkeyimages "|" " or ") (? $textkeyimages "" " "))
 ]
 
+//  screenshotnohud: Takes a screenshot without a hud
+//    The screenshot and the hud showing are delayed to prevent any issues since
+//    the game skips a few frames while taking a screenshot.
+canscreenshotnohud = 1
 screenshotnohud = [
-    sleep 50 [ screenshot; showhud @showhud ]
-    showhud 0
+    if $canscreenshotnohud [
+        canscreenshotnohud = 0 // Lock screenshotting without a hud for the 50ms duration
+        hudwasshown = $showhud // Previous $showhud state
+        if $hudwasshown [showhud 0] // Hide hud if it was shown
+        sleep 25 [screenshot]
+        // Restore hud if it was shown and restore screenshotting.
+        sleep 50 [showhud $hudwasshown; canscreenshotnohud = 1]
+    ]
 ]
 
 listcomplete vdelta [
