diff --git a/osu.Game/OsuGame.cs b/osu.Game/OsuGame.cs
index e3525e423c..68b5aa1cc9 100644
--- a/osu.Game/OsuGame.cs
+++ b/osu.Game/OsuGame.cs
@@ -359,6 +359,13 @@ namespace osu.Game
         {
             base.UpdateAfterChildren();
 
+            // we only want to apply these restrictions when we are inside a screen stack.
+            // the use case for not applying is in visual/unit tests.
+            bool applyRestrictions = currentScreen?.AllowBeatmapRulesetChange ?? false;
+
+            Ruleset.Disabled = applyRestrictions;
+            Beatmap.Disabled = applyRestrictions;
+
             mainContent.Padding = new MarginPadding { Top = ToolbarOffset };
 
             Cursor.State = currentScreen?.HasLocalCursorDisplayed == false ? Visibility.Visible : Visibility.Hidden;
diff --git a/osu.Game/Screens/OsuScreen.cs b/osu.Game/Screens/OsuScreen.cs
index 6e79d2b427..ae10d8828b 100644
--- a/osu.Game/Screens/OsuScreen.cs
+++ b/osu.Game/Screens/OsuScreen.cs
@@ -69,19 +69,6 @@ namespace osu.Game.Screens
             sampleExit = audio.Sample.Get(@"UI/melodic-1");
         }
 
-        protected override void Update()
-        {
-            if (!IsCurrentScreen) return;
-
-            if (ParentScreen != null)
-            {
-                // we only want to apply these restrictions when we are inside a screen stack.
-                // the use case for not applying is in visual/unit tests.
-                Ruleset.Disabled = !AllowBeatmapRulesetChange;
-                Beatmap.Disabled = !AllowBeatmapRulesetChange;
-            }
-        }
-
         protected override void OnResuming(Screen last)
         {
             base.OnResuming(last);