diff --git a/Marlin/src/feature/backlash.cpp b/Marlin/src/feature/backlash.cpp
index 3254fb3f3c54805897487e864c4e009581f9fad7..67a4afb326bf7b07e66568f9b63a852b3420801c 100644
--- a/Marlin/src/feature/backlash.cpp
+++ b/Marlin/src/feature/backlash.cpp
@@ -20,11 +20,13 @@
  *
  */
 
-#include "../Marlin.h"
+#include "../inc/MarlinConfigPre.h"
 
 #if ENABLED(BACKLASH_COMPENSATION)
 
 #include "backlash.h"
+
+#include "../module/motion.h"
 #include "../module/planner.h"
 
 #if ENABLED(BACKLASH_GCODE)
@@ -75,10 +77,10 @@ void Backlash::add_correction_steps(const int32_t &da, const int32_t &db, const
     // to segments where there is no direction change.
     static int32_t residual_error[XYZ] = { 0 };
   #else
-    // No leftover residual error from segment to segment
-    int32_t residual_error[XYZ] = { 0 };
     // No direction change, no correction.
     if (!changed_dir) return;
+    // No leftover residual error from segment to segment
+    int32_t residual_error[XYZ] = { 0 };
   #endif
 
   const float f_corr = float(correction) / 255.0f;
@@ -100,7 +102,7 @@ void Backlash::add_correction_steps(const int32_t &da, const int32_t &db, const
           if (reversing == (error_correction < 0)) {
             if (segment_proportion == 0)
               segment_proportion = MIN(1.0f, block->millimeters / smoothing_mm);
-            error_correction = ceil(segment_proportion * error_correction);
+            error_correction = CEIL(segment_proportion * error_correction);
           }
           else
             error_correction = 0; // Don't take up any backlash in this segment, as it would subtract steps
diff --git a/Marlin/src/feature/backlash.h b/Marlin/src/feature/backlash.h
index c35675f1b1676a947d75598d43c0e4561d6372e3..d1e1e63208da90898a2fa94c072900bf2446662a 100644
--- a/Marlin/src/feature/backlash.h
+++ b/Marlin/src/feature/backlash.h
@@ -36,7 +36,7 @@ public:
     #endif
     static inline void set_correction(const float &v) { correction = MAX(0, MIN(1.0, v)) * all_on; }
     static inline float get_correction() { return float(ui8_to_percent(correction)) / 100.0f; }
-  #elif ENABLED(BACKLASH_COMPENSATION)
+  #else
     static constexpr uint8_t correction = (BACKLASH_CORRECTION) * 0xFF;
     #ifdef BACKLASH_DISTANCE_MM
       static constexpr float distance_mm[XYZ] = BACKLASH_DISTANCE_MM;
@@ -46,10 +46,6 @@ public:
     #endif
     static inline void set_correction(float) { }
     static inline float get_correction() { return float(ui8_to_percent(correction)) / 100.0f; }
-  #else
-    static constexpr uint8_t correction = 0;
-    static inline void set_correction(float) { }
-    static inline float get_correction() { return 0; }
   #endif
 
   #if ENABLED(MEASURE_BACKLASH_WHEN_PROBING)
diff --git a/Marlin/src/gcode/calibrate/G425.cpp b/Marlin/src/gcode/calibrate/G425.cpp
index fd854bf77d6dbf13a9c40664b132d216018d52fb..7d729437a14692b8224a91799104572d210e430c 100644
--- a/Marlin/src/gcode/calibrate/G425.cpp
+++ b/Marlin/src/gcode/calibrate/G425.cpp
@@ -25,14 +25,17 @@
 #if ENABLED(CALIBRATION_GCODE)
 
 #include "../gcode.h"
+
+#if ENABLED(BACKLASH_GCODE)
+  #include "../../feature/backlash.h"
+#endif
+
 #include "../../lcd/ultralcd.h"
 #include "../../module/motion.h"
 #include "../../module/planner.h"
 #include "../../module/tool_change.h"
 #include "../../module/endstops.h"
 #include "../../feature/bedlevel/bedlevel.h"
-#include "../../feature/backlash.h"
-
 
 /**
  * G425 backs away from the calibration object by various distances
diff --git a/Marlin/src/module/configuration_store.cpp b/Marlin/src/module/configuration_store.cpp
index 50d5214ff2d7ee869b9588894ba51c6389889eef..1da47e6682f1a719c23d9b69982d476c0a030b4a 100644
--- a/Marlin/src/module/configuration_store.cpp
+++ b/Marlin/src/module/configuration_store.cpp
@@ -1177,17 +1177,20 @@ void MarlinSettings::postprocess() {
     // Backlash Compensation
     //
     {
+      #ifdef BACKLASH_DISTANCE_MM
+        const float (&backlash_distance_mm)[XYZ] = backlash.distance_mm;
+      #else
+        const float backlash_distance_mm[XYZ] = { 0 };
+      #endif
       #if ENABLED(BACKLASH_COMPENSATION)
-        const float   (&backlash_distance_mm)[XYZ] = backlash.distance_mm;
-        const uint8_t &backlash_correction         = backlash.correction;
+        const uint8_t &backlash_correction = backlash.correction;
       #else
-        const float    backlash_distance_mm[XYZ]   = { 0 };
-        const uint8_t  backlash_correction         = 0;
+        const uint8_t backlash_correction = 0;
       #endif
       #ifdef BACKLASH_SMOOTHING_MM
-        const float   &backlash_smoothing_mm       = backlash.smoothing_mm;
+        const float &backlash_smoothing_mm = backlash.smoothing_mm;
       #else
-        const float    backlash_smoothing_mm       = 3;
+        const float backlash_smoothing_mm = 3;
       #endif
       _FIELD_TEST(backlash_distance_mm);
       EEPROM_WRITE(backlash_distance_mm[X_AXIS]);
@@ -1962,17 +1965,20 @@ void MarlinSettings::postprocess() {
       // Backlash Compensation
       //
       {
+        #ifdef BACKLASH_DISTANCE_MM
+          float (&backlash_distance_mm)[XYZ] = backlash.distance_mm;
+        #else
+          float backlash_distance_mm[XYZ];
+        #endif
         #if ENABLED(BACKLASH_COMPENSATION)
-          float   (&backlash_distance_mm)[XYZ] = backlash.distance_mm;
-          uint8_t &backlash_correction         = backlash.correction;
+          uint8_t &backlash_correction = backlash.correction;
         #else
-          float   backlash_distance_mm[XYZ];
           uint8_t backlash_correction;
         #endif
         #ifdef BACKLASH_SMOOTHING_MM
           float &backlash_smoothing_mm = backlash.smoothing_mm;
         #else
-          float  backlash_smoothing_mm;
+          float backlash_smoothing_mm;
         #endif
         _FIELD_TEST(backlash_distance_mm);
         EEPROM_READ(backlash_distance_mm[X_AXIS]);