diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp
index a55210919..82bf3b7c0 100644
--- a/src/slic3r/GUI/GUI_App.cpp
+++ b/src/slic3r/GUI/GUI_App.cpp
@@ -1094,10 +1094,10 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
             }
 #if ENABLE_LAYOUT_NO_RESTART
             if (app_layout_changed) {
-                mainframe->Hide();
+                mainframe->GetSizer()->Hide((size_t)0);
                 mainframe->update_layout();
                 mainframe->select_tab(0);
-                mainframe->Show();
+                mainframe->GetSizer()->Show((size_t)0);
             }
 #else
             if (recreate_app)
diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp
index 366dc4471..5e26979c3 100644
--- a/src/slic3r/GUI/MainFrame.cpp
+++ b/src/slic3r/GUI/MainFrame.cpp
@@ -159,7 +159,9 @@ DPIFrame(NULL, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_S
 #endif // !ENABLE_LAYOUT_NO_RESTART
 
     // initialize layout
-    auto sizer = new wxBoxSizer(wxVERTICAL);
+    m_main_sizer = new wxBoxSizer(wxVERTICAL);
+    wxSizer* sizer = new wxBoxSizer(wxVERTICAL);
+    sizer->Add(m_main_sizer, 1, wxEXPAND);
 #if ENABLE_LAYOUT_NO_RESTART
     SetSizer(sizer);
     // initialize layout from config
@@ -311,7 +313,7 @@ void MainFrame::update_layout()
         if (m_layout == ESettingsLayout::Dlg)
             rescale_dialog_after_dpi_change(*this, m_settings_dialog, ERescaleTarget::Mainframe);
 
-        clean_sizer(GetSizer());
+        clean_sizer(m_main_sizer);
         clean_sizer(m_settings_dialog.GetSizer());
 
         if (m_settings_dialog.IsShown())
@@ -357,16 +359,16 @@ void MainFrame::update_layout()
     {
         m_plater->Reparent(m_tabpanel);
         m_tabpanel->InsertPage(0, m_plater, _L("Plater"));
-        GetSizer()->Add(m_tabpanel, 1, wxEXPAND);
+        m_main_sizer->Add(m_tabpanel, 1, wxEXPAND);
         m_plater->Show();
         m_tabpanel->Show();
         break;
     }
     case ESettingsLayout::New:
     {
-        GetSizer()->Add(m_plater, 1, wxEXPAND);
+        m_main_sizer->Add(m_plater, 1, wxEXPAND);
         m_tabpanel->Hide();
-        GetSizer()->Add(m_tabpanel, 1, wxEXPAND);
+        m_main_sizer->Add(m_tabpanel, 1, wxEXPAND);
         m_plater_page = new wxPanel(m_tabpanel);
         m_tabpanel->InsertPage(0, m_plater_page, _L("Plater")); // empty panel just for Plater tab */
         m_plater->Show();
@@ -374,7 +376,7 @@ void MainFrame::update_layout()
     }
     case ESettingsLayout::Dlg:
     {
-        GetSizer()->Add(m_plater, 1, wxEXPAND);
+        m_main_sizer->Add(m_plater, 1, wxEXPAND);
         m_tabpanel->Reparent(&m_settings_dialog);
         m_settings_dialog.GetSizer()->Add(m_tabpanel, 1, wxEXPAND);
 
@@ -1881,13 +1883,10 @@ void MainFrame::select_tab(size_t tab/* = size_t(-1)*/)
     }
 #if ENABLE_LAYOUT_NO_RESTART
     else if (m_layout == ESettingsLayout::New) {
+        m_main_sizer->Show(m_plater, tab == 0);
+        m_main_sizer->Show(m_tabpanel, tab != 0);
 #else
     else if (m_layout == slNew) {
-#endif // ENABLE_LAYOUT_NO_RESTART
-#if ENABLE_LAYOUT_NO_RESTART
-        GetSizer()->Show(m_plater, tab == 0);
-        GetSizer()->Show(m_tabpanel, tab != 0);
-#else
         m_plater->Show(tab == 0);
         m_tabpanel->Show(tab != 0);
 #endif // ENABLE_LAYOUT_NO_RESTART
diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp
index 931dd87b2..d73529e85 100644
--- a/src/slic3r/GUI/MainFrame.hpp
+++ b/src/slic3r/GUI/MainFrame.hpp
@@ -89,6 +89,7 @@ class MainFrame : public DPIFrame
     wxMenuItem* m_menu_item_repeat { nullptr }; // doesn't used now
 #endif
     wxMenuItem* m_menu_item_reslice_now { nullptr };
+    wxSizer*    m_main_sizer{ nullptr };
 
     PrintHostQueueDialog *m_printhost_queue_dlg;