diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp
index 3f74e2743bf59b40f95c50ca0dcd18da0c6873cd..4d4f1ce65d8ab33cc2314a92a7f8cb6bf6bba78f 100644
--- a/Marlin/ultralcd.cpp
+++ b/Marlin/ultralcd.cpp
@@ -252,6 +252,7 @@ void lcd_preheat_pla()
     setTargetBed(plaPreheatHPBTemp);
     fanSpeed = plaPreheatFanSpeed;
     lcd_return_to_status();
+	setWatch();	// heater sanity check timer
 }
 
 void lcd_preheat_abs()
@@ -262,6 +263,16 @@ void lcd_preheat_abs()
     setTargetBed(absPreheatHPBTemp);
     fanSpeed = absPreheatFanSpeed;
     lcd_return_to_status();
+	setWatch();	// heater sanity check timer
+}
+
+static void lcd_cooldown()
+{
+	setTargetHotend0(0);
+	setTargetHotend1(0);
+	setTargetHotend2(0);
+	setTargetBed(0);
+	lcd_return_to_status();
 }
 
 static void lcd_tune_menu()
@@ -299,7 +310,7 @@ static void lcd_prepare_menu()
     //MENU_ITEM(gcode, MSG_SET_ORIGIN, PSTR("G92 X0 Y0 Z0"));
     MENU_ITEM(function, MSG_PREHEAT_PLA, lcd_preheat_pla);
     MENU_ITEM(function, MSG_PREHEAT_ABS, lcd_preheat_abs);
-    MENU_ITEM(gcode, MSG_COOLDOWN, PSTR("M104 S0\nM140 S0"));
+    MENU_ITEM(function, MSG_COOLDOWN, lcd_cooldown);
     MENU_ITEM(submenu, MSG_MOVE_AXIS, lcd_move_menu);
     END_MENU();
 }