diff --git a/Marlin/ubl_G29.cpp b/Marlin/ubl_G29.cpp
index 2bdc14a69e94d4e8311f12713c3c85904a154dae..4c10c41cfe2d80a6c15b0633052c9a8cd51d888f 100644
--- a/Marlin/ubl_G29.cpp
+++ b/Marlin/ubl_G29.cpp
@@ -1133,11 +1133,9 @@
       err_flag = true;
     }
 
-    if (!WITHIN(RAW_X_POSITION(g29_x_pos), X_MIN_BED, X_MAX_BED))  // if X & Y are not valid, use center of the bed values
-      g29_x_pos = (X_MIN_BED + X_MAX_BED) / 2.0;
-
-    if (!WITHIN(RAW_Y_POSITION(g29_y_pos), Y_MIN_BED, Y_MAX_BED))  // if X & Y are not valid, use center of the bed values
-      g29_y_pos = (Y_MIN_BED + Y_MAX_BED) / 2.0;
+    // If X or Y are not valid, use center of the bed values
+    if (!WITHIN(RAW_X_POSITION(g29_x_pos), X_MIN_BED, X_MAX_BED)) g29_x_pos = LOGICAL_X_POSITION(X_CENTER);
+    if (!WITHIN(RAW_Y_POSITION(g29_y_pos), Y_MIN_BED, Y_MAX_BED)) g29_y_pos = LOGICAL_Y_POSITION(Y_CENTER);
 
     if (err_flag) return UBL_ERR;