diff --git a/src/libslic3r/PrintExport.hpp b/src/libslic3r/PrintExport.hpp
index e196cde5f..0df405846 100644
--- a/src/libslic3r/PrintExport.hpp
+++ b/src/libslic3r/PrintExport.hpp
@@ -155,14 +155,8 @@ template<> class FilePrinter<FilePrinterFormat::SLA_PNGZIP>
         "jobDir = ") + projectname + "\n" +
         "expTime = " + expt_str + "\n"
         "expTimeFirst = " + expt_first_str + "\n"
-//         "stepNum = " + stepnum_str + "\n"
-//         "wifiOn = 1\n"
-//         "tiltSlow = 60\n"
-//         "tiltFast = 15\n"
         "numFade = " + cnt_fade_layers + "\n"
-//         "startdelay = 0\n"
         "layerHeight = " + layerh_str + "\n"
-        "noteInfo = "
         "expTime = "+expt_str+" + resinType = generic+layerHeight = "
                   +layerh_str+" + printer = DWARF3\n"
         "usedMaterial = " + used_material + "\n"
diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp
index 7f3bc2557..d81498916 100644
--- a/src/libslic3r/SLAPrint.cpp
+++ b/src/libslic3r/SLAPrint.cpp
@@ -975,7 +975,7 @@ void SLAPrint::process()
         this->fill_statistics();
         // Set statistics values to the printer
         m_printer->set_statistics({(m_print_statistics.objects_used_material + m_print_statistics.support_used_material)/1000,
-                                10.0,
+                                double(m_default_object_config.faded_layers.getInt()),
                                 double(m_print_statistics.slow_layers_count),
                                 double(m_print_statistics.fast_layers_count)
                                 });
@@ -1318,7 +1318,8 @@ bool SLAPrintObject::invalidate_state_by_config_options(const std::vector<t_conf
     std::vector<SLAPrintObjectStep> steps;
     bool invalidated = false;
     for (const t_config_option_key &opt_key : opt_keys) {
-		if (opt_key == "layer_height") {
+		if (   opt_key == "layer_height"
+            || opt_key == "faded_layers") {
 			steps.emplace_back(slaposObjectSlice);
         } else if (
                opt_key == "supports_enable"
diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp
index d973fd581..c5d6fe9fd 100644
--- a/src/slic3r/GUI/GUI_ObjectList.cpp
+++ b/src/slic3r/GUI/GUI_ObjectList.cpp
@@ -1178,7 +1178,7 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const Mode
     const auto obj_idx = get_selected_obj_idx();
     if (obj_idx < 0) return;
 
-    const std::string name = _(L("Generic")) + "-" + _(type_name);
+    const wxString name = _(L("Generic")) + "-" + _(type_name);
     TriangleMesh mesh;
 
     auto& bed_shape = wxGetApp().preset_bundle->printers.get_edited_preset().config.option<ConfigOptionPoints>("bed_shape")->values;
@@ -1230,7 +1230,7 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const Mode
     }
 #endif // ENABLE_GENERIC_SUBPARTS_PLACEMENT
 
-    new_volume->name = name;
+    new_volume->name = into_u8(name);
     // set a default extruder value, since user can't add it manually
     new_volume->config.set_key_value("extruder", new ConfigOptionInt(0));
 
@@ -1238,7 +1238,7 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const Mode
     parts_changed(obj_idx);
 
     const auto object_item = m_objects_model->GetTopParent(GetSelection());
-    select_item(m_objects_model->AddVolumeChild(object_item, from_u8(name), type));
+    select_item(m_objects_model->AddVolumeChild(object_item, name, type));
 #ifndef __WXOSX__ //#ifdef __WXMSW__ // #ys_FIXME
     selection_changed();
 #endif //no __WXOSX__ //__WXMSW__
diff --git a/src/slic3r/GUI/ImGuiWrapper.cpp b/src/slic3r/GUI/ImGuiWrapper.cpp
index 0e437ef6d..61baf352b 100644
--- a/src/slic3r/GUI/ImGuiWrapper.cpp
+++ b/src/slic3r/GUI/ImGuiWrapper.cpp
@@ -101,6 +101,10 @@ void ImGuiWrapper::set_style_scaling(float scaling)
 
 bool ImGuiWrapper::update_mouse_data(wxMouseEvent& evt)
 {
+    if (! display_initialized()) {
+        return false;
+    }
+
     ImGuiIO& io = ImGui::GetIO();
     io.MousePos = ImVec2((float)evt.GetX(), (float)evt.GetY());
     io.MouseDown[0] = evt.LeftDown();
@@ -116,6 +120,10 @@ bool ImGuiWrapper::update_mouse_data(wxMouseEvent& evt)
 
 bool ImGuiWrapper::update_key_data(wxKeyEvent &evt)
 {
+    if (! display_initialized()) {
+        return false;
+    }
+
     ImGuiIO& io = ImGui::GetIO();
 
     if (evt.GetEventType() == wxEVT_CHAR) {
@@ -521,6 +529,12 @@ void ImGuiWrapper::render_draw_data(ImDrawData *draw_data)
     glScissor(last_scissor_box[0], last_scissor_box[1], (GLsizei)last_scissor_box[2], (GLsizei)last_scissor_box[3]);
 }
 
+bool ImGuiWrapper::display_initialized() const
+{
+    const ImGuiIO& io = ImGui::GetIO();
+    return io.DisplaySize.x >= 0.0f && io.DisplaySize.y >= 0.0f;
+}
+
 void ImGuiWrapper::destroy_device_objects()
 {
     destroy_fonts_texture();
diff --git a/src/slic3r/GUI/ImGuiWrapper.hpp b/src/slic3r/GUI/ImGuiWrapper.hpp
index e8755718b..2cadc773c 100644
--- a/src/slic3r/GUI/ImGuiWrapper.hpp
+++ b/src/slic3r/GUI/ImGuiWrapper.hpp
@@ -75,6 +75,7 @@ private:
     void init_input();
     void init_style();
     void render_draw_data(ImDrawData *draw_data);
+    bool display_initialized() const;
     void destroy_device_objects();
     void destroy_fonts_texture();
 
diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp
index f00a2c2c4..6924f86de 100644
--- a/src/slic3r/Utils/PresetUpdater.cpp
+++ b/src/slic3r/Utils/PresetUpdater.cpp
@@ -353,14 +353,6 @@ Updates PresetUpdater::priv::get_config_updates() const
 		// Perform a basic load and check the version
 		const auto vp = VendorProfile::from_ini(bundle_path, false);
 
-		const auto ver_current = idx.find(vp.config_version);
-		if (ver_current == idx.end()) {
-			auto message = (boost::format("Preset bundle `%1%` version not found in index: %2%") % idx.vendor() % vp.config_version.to_string()).str();
-			BOOST_LOG_TRIVIAL(error) << message;
-			GUI::show_error(nullptr, GUI::from_u8(message));
-			continue;
-		}
-
 		// Getting a recommended version from the latest index, wich may have been downloaded
 		// from the internet, or installed / updated from the installation resources.
 		const auto recommended = idx.recommended();
@@ -368,15 +360,24 @@ Updates PresetUpdater::priv::get_config_updates() const
 			BOOST_LOG_TRIVIAL(error) << boost::format("No recommended version for vendor: %1%, invalid index?") % idx.vendor();
 		}
 
-		BOOST_LOG_TRIVIAL(debug) << boost::format("Vendor: %1%, version installed: %2%, version cached: %3%")
+		const auto ver_current = idx.find(vp.config_version);
+		const bool ver_current_found = ver_current != idx.end();
+		if (! ver_current_found) {
+			auto message = (boost::format("Preset bundle `%1%` version not found in index: %2%") % idx.vendor() % vp.config_version.to_string()).str();
+			BOOST_LOG_TRIVIAL(error) << message;
+			GUI::show_error(nullptr, GUI::from_u8(message));
+		}
+
+		BOOST_LOG_TRIVIAL(debug) << boost::format("Vendor: %1%, version installed: %2%%3%, version cached: %4%")
 			% vp.name
-			% ver_current->config_version.to_string()
+			% vp.config_version.to_string()
+			% (ver_current_found ? "" : " (not found in index!)")
 			% recommended->config_version.to_string();
 
-		if (! ver_current->is_current_slic3r_supported()) {
+		if (ver_current_found && !ver_current->is_current_slic3r_supported()) {
 			BOOST_LOG_TRIVIAL(warning) << "Current Slic3r incompatible with installed bundle: " << bundle_path.string();
 			updates.incompats.emplace_back(std::move(bundle_path), *ver_current);
-		} else if (recommended->config_version > ver_current->config_version) {
+		} else if (recommended->config_version > vp.config_version) {
 			// Config bundle update situation
 
 			// Check if the update is already present in a snapshot