diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
index e16a938da0..0d4ff7f471 100644
--- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
+++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
@@ -298,7 +298,13 @@ FORCE_INLINE void _draw_heater_status(const heater_ind_t heater, const bool blin
 // Homed and known, display constantly.
 //
 FORCE_INLINE void _draw_axis_value(const AxisEnum axis, const char *value, const bool blink) {
-  const uint8_t offs = (XYZ_SPACING) * axis;
+  const AxisEnum a = (
+    #if ENABLED(LCD_SHOW_E_TOTAL)
+      axis == E_AXIS ? X_AXIS :
+    #endif
+    axis
+  );
+  const uint8_t offs = (XYZ_SPACING) * a;
   lcd_put_wchar(X_LABEL_POS + offs, XYZ_BASELINE, axis_codes[axis]);
   lcd_moveto(X_VALUE_POS + offs, XYZ_BASELINE);
   if (blink)
@@ -361,6 +367,12 @@ void MarlinUI::draw_status_screen() {
     #endif
   #endif
 
+  const bool showxy = (true
+    #if ENABLED(LCD_SHOW_E_TOTAL)
+      && !printingIsActive()
+    #endif
+  );
+
   // At the first page, generate new display values
   if (first_page) {
     #if ANIM_HBC
@@ -377,11 +389,6 @@ void MarlinUI::draw_status_screen() {
       heat_bits = new_bits;
     #endif
     const xyz_pos_t lpos = current_position.asLogical();
-    const bool showxy = (true
-      #if ENABLED(LCD_SHOW_E_TOTAL)
-        && !printingIsActive()
-      #endif
-    );
     if (showxy)
       strcpy(xstring, ftostr4sign(lpos.x));
     else {