diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 8eacd70565e9585721d761e110634541abd8b18a..73e8686dc7a462c850f432e99221c0bc8cc76515 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -2615,6 +2615,8 @@ static void clean_up_after_endstop_or_probe_move() {
     }
 
     void bed_level_virt_interpolate() {
+      bilinear_grid_spacing_virt[X_AXIS] = bilinear_grid_spacing[X_AXIS] / (BILINEAR_SUBDIVISIONS);
+      bilinear_grid_spacing_virt[Y_AXIS] = bilinear_grid_spacing[Y_AXIS] / (BILINEAR_SUBDIVISIONS);
       for (uint8_t y = 0; y < GRID_MAX_POINTS_Y; y++)
         for (uint8_t x = 0; x < GRID_MAX_POINTS_X; x++)
           for (uint8_t ty = 0; ty < BILINEAR_SUBDIVISIONS; ty++)
@@ -4268,11 +4270,6 @@ inline void gcode_G28() {
           bilinear_start[X_AXIS] = RAW_X_POSITION(left_probe_bed_position);
           bilinear_start[Y_AXIS] = RAW_Y_POSITION(front_probe_bed_position);
 
-          #if ENABLED(ABL_BILINEAR_SUBDIVISION)
-            bilinear_grid_spacing_virt[X_AXIS] = xGridSpacing / (BILINEAR_SUBDIVISIONS);
-            bilinear_grid_spacing_virt[Y_AXIS] = yGridSpacing / (BILINEAR_SUBDIVISIONS);
-          #endif
-
           // Can't re-enable (on error) until the new grid is written
           abl_should_enable = false;
         }
@@ -4478,7 +4475,7 @@ inline void gcode_G28() {
             inInc = -1;
           }
 
-          zig = !zig; // zag
+          zig ^= true; // zag
 
           // Inner loop is Y with PROBE_Y_FIRST enabled
           for (int8_t PR_INNER_VAR = inStart; PR_INNER_VAR != inStop; PR_INNER_VAR += inInc) {
@@ -5802,7 +5799,7 @@ inline void gcode_M42() {
 #if ENABLED(AUTO_BED_LEVELING_UBL) && ENABLED(UBL_G26_MESH_EDITING)
 
   inline void gcode_M49() {
-    ubl.g26_debug_flag = !ubl.g26_debug_flag;
+    ubl.g26_debug_flag ^= true;
     SERIAL_PROTOCOLPGM("UBL Debug Flag turned ");
     serialprintPGM(ubl.g26_debug_flag ? PSTR("on.") : PSTR("off."));
   }
diff --git a/Marlin/ubl_G29.cpp b/Marlin/ubl_G29.cpp
index 5e999a58d8d955568cdf6466b51bc7b8d2d4381c..c0b54fc1b2928a524abc1f0630cf838eb24a275a 100644
--- a/Marlin/ubl_G29.cpp
+++ b/Marlin/ubl_G29.cpp
@@ -1551,7 +1551,7 @@
           inInc = -1;
         }
 
-        zig = !zig; // zag
+        zig ^= true; // zag
 
         // Inner loop is Y with PROBE_Y_FIRST enabled
         for (PR_INNER_VAR = inStart; PR_INNER_VAR != inStop; PR_INNER_VAR += inInc) {
diff --git a/Marlin/ultralcd.cpp b/Marlin/ultralcd.cpp
index e9c8700b94d4fac6f263ff0b00f01167a6be7984..0446999b629f5d17da5245e2372fa532a4f3d4a8 100755
--- a/Marlin/ultralcd.cpp
+++ b/Marlin/ultralcd.cpp
@@ -688,7 +688,7 @@ void kill_screen(const char* lcd_msg) {
     extern void update_case_light();
 
     void toggle_case_light() {
-      case_light_on = !case_light_on;
+      case_light_on ^= true;
       lcdDrawUpdate = LCDVIEW_CALL_REDRAW_NEXT;
       update_case_light();
     }
@@ -3196,7 +3196,7 @@ void kill_screen(const char* lcd_msg) {
 
   #endif //SDSUPPORT
 
-  void menu_action_setting_edit_bool(const char* pstr, bool* ptr) {UNUSED(pstr); *ptr = !(*ptr); lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; }
+  void menu_action_setting_edit_bool(const char* pstr, bool* ptr) {UNUSED(pstr); *ptr ^= true; lcdDrawUpdate = LCDVIEW_CLEAR_CALL_REDRAW; }
   void menu_action_setting_edit_callback_bool(const char* pstr, bool* ptr, screenFunc_t callback) {
     menu_action_setting_edit_bool(pstr, ptr);
     (*callback)();