diff --git a/Marlin/src/feature/tmc2130.cpp b/Marlin/src/feature/tmc2130.cpp
index a2623a45ca26348b8d04251279d1142f67433129..60a0ba1f687e9152378e21c100f4cfdb2f35de96 100644
--- a/Marlin/src/feature/tmc2130.cpp
+++ b/Marlin/src/feature/tmc2130.cpp
@@ -125,9 +125,6 @@ void tmc2130_checkOverTemp(void) {
     #if ENABLED(E4_IS_TMC2130)
       automatic_current_control(stepperE4, "E4");
     #endif
-    #if ENABLED(E4_IS_TMC2130)
-      automatic_current_control(stepperE4);
-    #endif
   }
 }
 
diff --git a/Marlin/src/lcd/ultralcd.cpp b/Marlin/src/lcd/ultralcd.cpp
index 9a19104d71138c7f3000dd30bb1475653a277fcc..9fee89afb4d48c17b5e3fdfbb20ba316f60fea3f 100644
--- a/Marlin/src/lcd/ultralcd.cpp
+++ b/Marlin/src/lcd/ultralcd.cpp
@@ -212,7 +212,7 @@ uint16_t max_display_update_time = 0;
   void _menu_action_back();
   void menu_action_submenu(screenFunc_t data);
   void menu_action_gcode(const char* pgcode);
-  void menu_action_function(screenFunc_t data);
+  void menu_action_function(menuAction_t data);
 
   #define DECLARE_MENU_EDIT_TYPE(_type, _name) \
     bool _menu_edit_ ## _name(); \
@@ -2750,9 +2750,13 @@ void kill_screen(const char* lcd_msg) {
       , int8_t eindex=-1
     #endif
   ) {
-    #if E_MANUAL > 1
-      if (axis == E_AXIS) manual_move_e_index = eindex >= 0 ? eindex : active_extruder;
+    #if ENABLED(DUAL_X_CARRIAGE) || E_MANUAL > 1
+      #if E_MANUAL > 1
+        if (axis == E_AXIS)
+      #endif
+          manual_move_e_index = eindex >= 0 ? eindex : active_extruder;
     #endif
+
     manual_move_start_time = millis() + (move_menu_scale < 0.99 ? 0UL : 250UL); // delay for bigger moves
     manual_move_axis = (int8_t)axis;
   }
@@ -2963,7 +2967,7 @@ void kill_screen(const char* lcd_msg) {
     else
       MENU_ITEM(gcode, MSG_AUTO_HOME, PSTR("G28"));
 
-    #if ENABLED(SWITCHING_EXTRUDER)
+    #if ENABLED(SWITCHING_EXTRUDER) || ENABLED(DUAL_X_CARRIAGE)
       if (active_extruder)
         MENU_ITEM(gcode, MSG_SELECT " " MSG_E1, PSTR("T0"));
       else
diff --git a/Marlin/src/lcd/ultralcd.h b/Marlin/src/lcd/ultralcd.h
index db17e6284fe9cc6e37969a1bd5dd8d00d8b58b8e..16b3998171a00239dccae0368334294789738a15 100644
--- a/Marlin/src/lcd/ultralcd.h
+++ b/Marlin/src/lcd/ultralcd.h
@@ -84,6 +84,7 @@
 
     // Function pointer to menu functions.
     typedef void (*screenFunc_t)();
+    typedef void (*menuAction_t)();
 
     void lcd_goto_screen(screenFunc_t screen, const uint32_t encoder=0);
 
diff --git a/Marlin/src/module/motion.cpp b/Marlin/src/module/motion.cpp
index bb8ca3106a71acdde2b865a687226ad70048618e..87cf0b9bf08b7903d31fbcceb1074193b84e47fe 100644
--- a/Marlin/src/module/motion.cpp
+++ b/Marlin/src/module/motion.cpp
@@ -769,7 +769,7 @@ float soft_endstop_min[XYZ] = { X_MIN_BED, Y_MIN_BED, Z_MIN_POS },
           break;
       }
     }
-    return false;
+    return prepare_move_to_destination_cartesian();
   }
 
 #endif // DUAL_X_CARRIAGE
@@ -811,7 +811,7 @@ void prepare_move_to_destination() {
     #elif IS_KINEMATIC
       prepare_kinematic_move_to(destination)
     #elif ENABLED(DUAL_X_CARRIAGE)
-      prepare_move_to_destination_dualx() || prepare_move_to_destination_cartesian()
+      prepare_move_to_destination_dualx()
     #else
       prepare_move_to_destination_cartesian()
     #endif