diff --git a/Marlin/src/lcd/ultralcd_impl_DOGM.h b/Marlin/src/lcd/ultralcd_impl_DOGM.h
index c1b868c55cb252d10797b3d016c7b9e0541cbdc1..1ece678fade7f1e564f10355c0550de266b65521 100644
--- a/Marlin/src/lcd/ultralcd_impl_DOGM.h
+++ b/Marlin/src/lcd/ultralcd_impl_DOGM.h
@@ -278,6 +278,8 @@ void lcd_printPGM_utf(const char *str, uint8_t n=LCD_WIDTH) {
 
 #if ENABLED(SHOW_BOOTSCREEN)
 
+  bool show_bootscreen = true;
+
   #if ENABLED(SHOW_CUSTOM_BOOTSCREEN)
 
     void lcd_custom_bootscreen() {
@@ -294,8 +296,6 @@ void lcd_printPGM_utf(const char *str, uint8_t n=LCD_WIDTH) {
 
   void lcd_bootscreen() {
 
-    static bool show_bootscreen = true;
-
     if (show_bootscreen) {
       show_bootscreen = false;
 
@@ -353,11 +353,13 @@ static void lcd_implementation_init() {
   #endif
 
   #if ENABLED(SHOW_BOOTSCREEN)
-    #if ENABLED(SHOW_CUSTOM_BOOTSCREEN)
-      lcd_custom_bootscreen();
-    #else
-      lcd_bootscreen();
-    #endif
+    if (show_bootscreen) {
+      #if ENABLED(SHOW_CUSTOM_BOOTSCREEN)
+        lcd_custom_bootscreen();
+      #else
+        lcd_bootscreen();
+      #endif
+    }
   #endif
 }