diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp
index 9f6d4ae15..b76628b8d 100644
--- a/src/slic3r/GUI/GUI_Preview.cpp
+++ b/src/slic3r/GUI/GUI_Preview.cpp
@@ -368,12 +368,7 @@ void Preview::load_print(bool keep_z_range)
 
 void Preview::reload_print(bool keep_volumes)
 {
-    if (!IsShown())
-    {
-        m_volumes_cleanup_required = !keep_volumes;
-        return;
-    }
-
+#ifndef __linux__
     if (m_volumes_cleanup_required || !keep_volumes)
     {
         m_canvas->reset_volumes();
@@ -381,6 +376,23 @@ void Preview::reload_print(bool keep_volumes)
         m_loaded = false;
         m_volumes_cleanup_required = false;
     }
+#endif // __linux__
+
+    if (!IsShown())
+    {
+        m_volumes_cleanup_required = !keep_volumes;
+        return;
+    }
+
+#ifdef __linux__
+    if (m_volumes_cleanup_required || !keep_volumes)
+    {
+        m_canvas->reset_volumes();
+        m_canvas->reset_legend_texture();
+        m_loaded = false;
+        m_volumes_cleanup_required = false;
+    }
+#endif // __linux__
 
     load_print();
 }