diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index aed37731ac4..5e2a26fa391 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -3255,7 +3255,7 @@ static void homeaxis(const AxisEnum axis) {
     else {
       // If a hop was done and Z hasn't changed, undo the Z hop
       if (hop_amount) {
-        current_position[Z_AXIS] -= retract_zlift;          // Pretend current pos is lower. Next move raises Z.
+        current_position[Z_AXIS] += retract_zlift;          // Pretend current pos is lower. Next move raises Z.
         SYNC_PLAN_POSITION_KINEMATIC();                     // Set the planner to the new position
         feedrate_mm_s = planner.max_feedrate_mm_s[Z_AXIS];  // Z feedrate to max
         prepare_move_to_destination();                      // Raise up to the old current pos