diff --git a/osu.Game/Screens/Play/Player.cs b/osu.Game/Screens/Play/Player.cs
index 9be4fd6a65..07be482529 100644
--- a/osu.Game/Screens/Play/Player.cs
+++ b/osu.Game/Screens/Play/Player.cs
@@ -52,6 +52,9 @@ namespace osu.Game.Screens.Play
public override OverlayActivation InitialOverlayActivationMode => OverlayActivation.UserTriggered;
+ // We are managing our own adjustments (see OnEntering/OnExiting).
+ public override bool AllowRateAdjustments => false;
+
///
/// Whether gameplay should pause when the game window focus is lost.
///
@@ -627,6 +630,10 @@ namespace osu.Game.Screens.Play
foreach (var mod in Mods.Value.OfType())
mod.ApplyToHUD(HUDOverlay);
+
+ Beatmap.Value.Track.ResetSpeedAdjustments();
+ foreach (var mod in Mods.Value.OfType())
+ mod.ApplyToTrack(Beatmap.Value.Track);
}
public override void OnSuspending(IScreen next)
@@ -660,6 +667,8 @@ namespace osu.Game.Screens.Play
// as we are no longer the current screen, we cannot guarantee the track is still usable.
GameplayClockContainer?.StopUsingBeatmapClock();
+ Beatmap.Value.Track.ResetSpeedAdjustments();
+
fadeOut();
return base.OnExiting(next);
}