diff --git a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
index 3a8f9c296ed6c46f43a3d27ae5b5a84f1688e51a..e5ff034132e9114f1e62c503fe508f98b4fffe8c 100644
--- a/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
+++ b/Marlin/src/lcd/dogm/status_screen_DOGM.cpp
@@ -345,7 +345,7 @@ void MarlinUI::draw_status_screen() {
       static char progress_string[5];
     #endif
     static uint8_t lastElapsed = 0, elapsed_x_pos = 0;
-    static char elapsed_string[22];
+    static char elapsed_string[16];
     #if ENABLED(SHOW_REMAINING_TIME)
       #define SHOW_REMAINING_TIME_PREFIX 'E'
       static uint8_t estimation_x_pos = 0;
diff --git a/Marlin/src/libs/duration_t.h b/Marlin/src/libs/duration_t.h
index 2015c17436f9cf5080b8463ab02f20c9b6f19f4f..0df3659b1bdf30f57f05a0ef8d318f32fed60869 100644
--- a/Marlin/src/libs/duration_t.h
+++ b/Marlin/src/libs/duration_t.h
@@ -151,15 +151,15 @@ struct duration_t {
              m = uint16_t(this->minute() % 60UL);
     if (with_days) {
       uint16_t d = this->day();
-      sprintf_P(buffer, PSTR("%ud %02u:%02u"), d, h % 24, m);
+      sprintf_P(buffer, PSTR("%hud %02hu:%02hu"), d, h % 24, m);
       return d >= 10 ? 9 : 8;
     }
     else if (h < 100) {
-      sprintf_P(buffer, PSTR("%02u:%02u"), h, m);
+      sprintf_P(buffer, PSTR("%02hu:%02hu"), h, m);
       return 5;
     }
     else {
-      sprintf_P(buffer, PSTR("%u:%02u"), h, m);
+      sprintf_P(buffer, PSTR("%hu:%02hu"), h, m);
       return 6;
     }
   }