diff --git a/python_payload/st3m/ui/view.py b/python_payload/st3m/ui/view.py
index 6ba51646291b26e0fab97e3e80cae295b381a955..e7fbda2b76ca47cdc857b010372d8d1f1814fee5 100644
--- a/python_payload/st3m/ui/view.py
+++ b/python_payload/st3m/ui/view.py
@@ -205,13 +205,6 @@ class ViewManager(Responder):
     def think(self, ins: InputState, delta_ms: int) -> None:
         self._input.think(ins, delta_ms)
 
-        if self._input.buttons.os.middle.pressed:
-            if not self._history and self._debug:
-                utime.sleep(0.5)
-                machine.reset()
-            else:
-                self.pop(ViewTransitionSwipeRight())
-
         if self._transitioning:
             if not self._first_think:
                 self._transition += (delta_ms / 1000.0) * (1000 / self._time_ms)
@@ -223,6 +216,13 @@ class ViewManager(Responder):
                 if self._fully_drawn > 3:  # TODO: use actual pipeline depth
                     self._end_transition()
 
+        if self._input.buttons.os.middle.pressed:
+            if not self._history and self._debug:
+                utime.sleep(0.5)
+                machine.reset()
+            else:
+                self.pop(ViewTransitionSwipeRight())
+
         if self._outgoing is not None:
             self._outgoing.think(ins, delta_ms)
         if self._incoming is not None: