diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index aeafe4aad02eeda3a78c565efdeaa91891e2fff7..ac4864c960e699c6302c768ec78d165287f9d3ae 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -2171,10 +2171,11 @@ static void clean_up_after_endstop_or_probe_move() {
 
     #else
 
-      // move fast, close to the bed
-      float z = LOGICAL_Z_POSITION(home_bump_mm(Z_AXIS));
-      if (zprobe_zoffset < 0) z -= zprobe_zoffset;
-      do_blocking_move_to_z(z, MMM_TO_MMS(Z_PROBE_SPEED_FAST));
+      // If the nozzle is above the travel height then
+      // move down quickly before doing the slow probe
+      float z = LOGICAL_Z_POSITION(Z_PROBE_TRAVEL_HEIGHT);
+      if (z < current_position[Z_AXIS])
+        do_blocking_move_to_z(z, MMM_TO_MMS(Z_PROBE_SPEED_FAST));
 
     #endif