diff --git a/osu.Game/Screens/Play/GameplayMenuOverlay.cs b/osu.Game/Screens/Play/GameplayMenuOverlay.cs
index 0680842891..440b8d37b9 100644
--- a/osu.Game/Screens/Play/GameplayMenuOverlay.cs
+++ b/osu.Game/Screens/Play/GameplayMenuOverlay.cs
@@ -44,7 +44,15 @@ namespace osu.Game.Screens.Play
///
/// Action that is invoked when is triggered.
///
- protected virtual Action BackAction => () => InternalButtons.LastOrDefault()?.TriggerClick();
+ protected virtual Action BackAction => () =>
+ {
+ // We prefer triggering the button click as it will animate...
+ // but sometimes buttons aren't present (see FailOverlay's constructor as an example).
+ if (Buttons.Any())
+ Buttons.Last().TriggerClick();
+ else
+ OnQuit?.Invoke();
+ };
///
/// Action that is invoked when is triggered.
diff --git a/osu.Game/Screens/Play/PauseOverlay.cs b/osu.Game/Screens/Play/PauseOverlay.cs
index 88561ada71..2aa2793fd4 100644
--- a/osu.Game/Screens/Play/PauseOverlay.cs
+++ b/osu.Game/Screens/Play/PauseOverlay.cs
@@ -29,7 +29,13 @@ namespace osu.Game.Screens.Play
private SkinnableSound pauseLoop;
- protected override Action BackAction => () => InternalButtons.First().TriggerClick();
+ protected override Action BackAction => () =>
+ {
+ if (Buttons.Any())
+ Buttons.First().TriggerClick();
+ else
+ OnResume?.Invoke();
+ };
[BackgroundDependencyLoader]
private void load(OsuColour colours)