diff --git a/Marlin/src/feature/bedlevel/abl/abl.cpp b/Marlin/src/feature/bedlevel/abl/abl.cpp
index 044adc5d365a78a6598dc31407401dd35c47e8bc..f1e736c88b4bc427a56f940ed76840d3ad462ec3 100644
--- a/Marlin/src/feature/bedlevel/abl/abl.cpp
+++ b/Marlin/src/feature/bedlevel/abl/abl.cpp
@@ -25,6 +25,7 @@
 #if ENABLED(AUTO_BED_LEVELING_BILINEAR)
 
 #include "abl.h"
+#include "../bedlevel.h"
 
 #include "../../../module/motion.h"
 
diff --git a/Marlin/src/feature/bedlevel/abl/abl.h b/Marlin/src/feature/bedlevel/abl/abl.h
index 8a82bfb3becb9b949e35ead53a81d508fd97ed69..26a5350645dcb539ce287a952a611a262c678a64 100644
--- a/Marlin/src/feature/bedlevel/abl/abl.h
+++ b/Marlin/src/feature/bedlevel/abl/abl.h
@@ -21,27 +21,23 @@
  */
 #pragma once
 
-#include "../../../inc/MarlinConfig.h"
+#include "../../../inc/MarlinConfigPre.h"
 
-#if ENABLED(AUTO_BED_LEVELING_BILINEAR)
+extern int bilinear_grid_spacing[2], bilinear_start[2];
+extern float bilinear_grid_factor[2],
+             z_values[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y];
+float bilinear_z_offset(const float raw[XYZ]);
 
-  #include "../bedlevel.h"
+void extrapolate_unprobed_bed_level();
+void print_bilinear_leveling_grid();
+void refresh_bed_level();
+#if ENABLED(ABL_BILINEAR_SUBDIVISION)
+  void print_bilinear_leveling_grid_virt();
+  void bed_level_virt_interpolate();
+#endif
 
-  extern int bilinear_grid_spacing[2], bilinear_start[2];
-  extern float bilinear_grid_factor[2],
-               z_values[GRID_MAX_POINTS_X][GRID_MAX_POINTS_Y];
-  float bilinear_z_offset(const float raw[XYZ]);
+#if IS_CARTESIAN && DISABLED(SEGMENT_LEVELED_MOVES)
+  void bilinear_line_to_destination(const float fr_mm_s, uint16_t x_splits=0xFFFF, uint16_t y_splits=0xFFFF);
+#endif
 
-  void extrapolate_unprobed_bed_level();
-  void print_bilinear_leveling_grid();
-  void refresh_bed_level();
-  #if ENABLED(ABL_BILINEAR_SUBDIVISION)
-    void print_bilinear_leveling_grid_virt();
-    void bed_level_virt_interpolate();
-  #endif
-
-  #if IS_CARTESIAN && DISABLED(SEGMENT_LEVELED_MOVES)
-    void bilinear_line_to_destination(const float fr_mm_s, uint16_t x_splits=0xFFFF, uint16_t y_splits=0xFFFF);
-  #endif
-
-#endif // AUTO_BED_LEVELING_BILINEAR
+#define Z_VALUES(X,Y) z_values[X][Y]
diff --git a/Marlin/src/feature/bedlevel/bedlevel.h b/Marlin/src/feature/bedlevel/bedlevel.h
index d9c5cdee7d857095afb377a0290ed634c4e42e90..b57ed696faf41661a9c85c5fc31ea37a49c0ef92 100644
--- a/Marlin/src/feature/bedlevel/bedlevel.h
+++ b/Marlin/src/feature/bedlevel/bedlevel.h
@@ -80,6 +80,6 @@ void reset_bed_level();
   #include "mbl/mesh_bed_leveling.h"
 #elif ENABLED(AUTO_BED_LEVELING_UBL)
   #include "ubl/ubl.h"
-#elif HAS_ABL
+#elif ENABLED(AUTO_BED_LEVELING_BILINEAR)
   #include "abl/abl.h"
 #endif
diff --git a/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.h b/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.h
index 22563e9d9bdfa774f953515a5732a639c3add7ea..81548f2e4774bf2a93f51bb206d0445ed1f775ff 100644
--- a/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.h
+++ b/Marlin/src/feature/bedlevel/mbl/mesh_bed_leveling.h
@@ -118,3 +118,5 @@ public:
 };
 
 extern mesh_bed_leveling mbl;
+
+#define Z_VALUES(X,Y) mbl.z_values[X][Y]
diff --git a/Marlin/src/feature/bedlevel/ubl/ubl.h b/Marlin/src/feature/bedlevel/ubl/ubl.h
index 6f2cfb1ac635c6766cf2b75bcabb89f68443a3d0..805469b8d470f25800191e10a69f37cc4cc39eb2 100644
--- a/Marlin/src/feature/bedlevel/ubl/ubl.h
+++ b/Marlin/src/feature/bedlevel/ubl/ubl.h
@@ -370,3 +370,5 @@ class unified_bed_leveling {
 }; // class unified_bed_leveling
 
 extern unified_bed_leveling ubl;
+
+#define Z_VALUES(X,Y) ubl.z_values[X][Y]
diff --git a/Marlin/src/gcode/bedlevel/M420.cpp b/Marlin/src/gcode/bedlevel/M420.cpp
index bdf33a0a284f627b7aaa8c7cb32977c0b3d145c5..4144fadcd5881639df56da5e1cca2c3c09ac0f11 100644
--- a/Marlin/src/gcode/bedlevel/M420.cpp
+++ b/Marlin/src/gcode/bedlevel/M420.cpp
@@ -105,12 +105,6 @@ void GcodeSuite::M420() {
 
   #if HAS_MESH
 
-    #if ENABLED(MESH_BED_LEVELING)
-      #define Z_VALUES(X,Y) mbl.z_values[X][Y]
-    #else
-      #define Z_VALUES(X,Y) z_values[X][Y]
-    #endif
-
     // Subtract the given value or the mean from all mesh values
     if (leveling_is_valid() && parser.seen('C')) {
       const float cval = parser.value_float();
diff --git a/Marlin/src/inc/Conditionals_LCD.h b/Marlin/src/inc/Conditionals_LCD.h
index af1832fd352b4e3e7810101fc153b22b3e6218e2..9a8a508aa6dc512d7aa028efbaba9c9b04941daa 100644
--- a/Marlin/src/inc/Conditionals_LCD.h
+++ b/Marlin/src/inc/Conditionals_LCD.h
@@ -19,15 +19,13 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  */
+#pragma once
 
 /**
  * Conditionals_LCD.h
  * Conditionals that need to be set before Configuration_adv.h or pins.h
  */
 
-#ifndef CONDITIONALS_LCD_H // Get the LCD defines which are needed first
-#define CONDITIONALS_LCD_H
-
 #define LCD_HAS_DIRECTIONAL_BUTTONS (BUTTON_EXISTS(UP) || BUTTON_EXISTS(DWN) || BUTTON_EXISTS(LFT) || BUTTON_EXISTS(RT))
 
 #if ENABLED(CARTESIO_UI)
@@ -557,6 +555,10 @@
 
 #define HOMING_Z_WITH_PROBE (HAS_BED_PROBE && Z_HOME_DIR < 0 && ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN))
 
+#ifdef GRID_MAX_POINTS_X
+  #define GRID_MAX_POINTS ((GRID_MAX_POINTS_X) * (GRID_MAX_POINTS_Y))
+#endif
+
 #define HAS_SOFTWARE_ENDSTOPS (ENABLED(MIN_SOFTWARE_ENDSTOPS) || ENABLED(MAX_SOFTWARE_ENDSTOPS))
 #define HAS_RESUME_CONTINUE (ENABLED(EXTENSIBLE_UI) || ENABLED(NEWPANEL) || ENABLED(EMERGENCY_PARSER))
 #define HAS_COLOR_LEDS (ENABLED(BLINKM) || ENABLED(RGB_LED) || ENABLED(RGBW_LED) || ENABLED(PCA9632) || ENABLED(NEOPIXEL_LED))
@@ -566,4 +568,6 @@
 #define Z_MULTI_STEPPER_DRIVERS (ENABLED(Z_DUAL_STEPPER_DRIVERS) || ENABLED(Z_TRIPLE_STEPPER_DRIVERS))
 #define Z_MULTI_ENDSTOPS (ENABLED(Z_DUAL_ENDSTOPS) || ENABLED(Z_TRIPLE_ENDSTOPS))
 
-#endif // CONDITIONALS_LCD_H
+#define IS_SCARA     (ENABLED(MORGAN_SCARA) || ENABLED(MAKERARM_SCARA))
+#define IS_KINEMATIC (ENABLED(DELTA) || IS_SCARA)
+#define IS_CARTESIAN !IS_KINEMATIC
diff --git a/Marlin/src/inc/Conditionals_post.h b/Marlin/src/inc/Conditionals_post.h
index f086bea982594dc2eca6a414cc04d45cc1914817..b331c1c2369c127e8b9d8c29095bb4c84d2ab576 100644
--- a/Marlin/src/inc/Conditionals_post.h
+++ b/Marlin/src/inc/Conditionals_post.h
@@ -43,10 +43,6 @@
   #define NOT_A_PIN 0 // For PINS_DEBUGGING
 #endif
 
-#define IS_SCARA (ENABLED(MORGAN_SCARA) || ENABLED(MAKERARM_SCARA))
-#define IS_KINEMATIC (ENABLED(DELTA) || IS_SCARA)
-#define IS_CARTESIAN !IS_KINEMATIC
-
 #define HAS_CLASSIC_JERK (IS_KINEMATIC || DISABLED(JUNCTION_DEVIATION))
 
 /**
@@ -1538,9 +1534,6 @@
   #define LCD_TIMEOUT_TO_STATUS 15000
 #endif
 
-// Shorthand
-#define GRID_MAX_POINTS ((GRID_MAX_POINTS_X) * (GRID_MAX_POINTS_Y))
-
 // Add commands that need sub-codes to this list
 #define USE_GCODE_SUBCODES ENABLED(G38_PROBE_TARGET) || ENABLED(CNC_COORDINATE_SYSTEMS) || ENABLED(POWER_LOSS_RECOVERY)
 
diff --git a/Marlin/src/lcd/ultralcd.h b/Marlin/src/lcd/ultralcd.h
index 7d36aaeae4b5ecab3a5690f12e086a140774b67e..49cb32fdcff00561e9eaca2cc25507d3a0634572 100644
--- a/Marlin/src/lcd/ultralcd.h
+++ b/Marlin/src/lcd/ultralcd.h
@@ -320,8 +320,6 @@
     #if ENABLED(AUTO_BED_LEVELING_UBL)
       void lcd_mesh_edit_setup(const float &initial);
       float lcd_mesh_edit();
-      void lcd_z_offset_edit_setup(const float &initial);
-      float lcd_z_offset_edit();
     #endif
 
     #if ENABLED(SCROLL_LONG_FILENAMES)