diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index d38123ce93eab5fc07fbe9e41cd16c5877e04244..24f201105d7f5ce60d04568b3158ed5a4376cd98 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -1165,7 +1165,12 @@ void refresh_cmd_timeout(void)
retracted[active_extruder]=true;
prepare_move();
current_position[Z_AXIS]-=retract_zlift;
+#ifdef DELTA
+ calculate_delta(current_position); // change cartesian kinematic to delta kinematic;
+ plan_set_position(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS]);
+#else
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+#endif
prepare_move();
feedrate = oldFeedrate;
} else if(!retracting && retracted[active_extruder]) {
@@ -1174,7 +1179,12 @@ void refresh_cmd_timeout(void)
destination[Z_AXIS]=current_position[Z_AXIS];
destination[E_AXIS]=current_position[E_AXIS];
current_position[Z_AXIS]+=retract_zlift;
+#ifdef DELTA
+ calculate_delta(current_position); // change cartesian kinematic to delta kinematic;
+ plan_set_position(delta[X_AXIS], delta[Y_AXIS], delta[Z_AXIS], current_position[E_AXIS]);
+#else
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+#endif
//prepare_move();
if (swapretract) {
current_position[E_AXIS]-=(retract_length_swap+retract_recover_length_swap)/volumetric_multiplier[active_extruder];