diff --git a/resources/localization/Slic3rPE.pot b/resources/localization/Slic3rPE.pot
index c65ea69d4..098fc7d07 100644
--- a/resources/localization/Slic3rPE.pot
+++ b/resources/localization/Slic3rPE.pot
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-04-18 10:07+0200\n"
+"POT-Creation-Date: 2019-04-26 11:00+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,44 +22,44 @@ msgstr ""
 msgid "About %s"
 msgstr ""
 
-#: src/slic3r/GUI/AboutDialog.cpp:64 src/slic3r/GUI/MainFrame.cpp:52
+#: src/slic3r/GUI/AboutDialog.cpp:67 src/slic3r/GUI/MainFrame.cpp:52
 msgid "Version"
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:43
+#: src/slic3r/GUI/BedShapeDialog.cpp:60
 msgid "Shape"
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:51
+#: src/slic3r/GUI/BedShapeDialog.cpp:68
 msgid "Rectangular"
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:55
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:118 src/slic3r/GUI/Plater.cpp:136
-#: src/slic3r/GUI/Tab.cpp:2186
+#: src/slic3r/GUI/BedShapeDialog.cpp:72
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:118 src/slic3r/GUI/Plater.cpp:137
+#: src/slic3r/GUI/Tab.cpp:2257
 msgid "Size"
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:56
+#: src/slic3r/GUI/BedShapeDialog.cpp:73
 msgid "Size in X and Y of the rectangular plate."
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:62
+#: src/slic3r/GUI/BedShapeDialog.cpp:79
 msgid "Origin"
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:63
+#: src/slic3r/GUI/BedShapeDialog.cpp:80
 msgid ""
 "Distance of the 0,0 G-code coordinate from the front left corner of the "
 "rectangle."
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:67
+#: src/slic3r/GUI/BedShapeDialog.cpp:84
 msgid "Circular"
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:70 src/slic3r/GUI/ConfigWizard.cpp:111
-#: src/slic3r/GUI/ConfigWizard.cpp:547 src/slic3r/GUI/ConfigWizard.cpp:561
+#: src/slic3r/GUI/BedShapeDialog.cpp:87 src/slic3r/GUI/ConfigWizard.cpp:118
+#: src/slic3r/GUI/ConfigWizard.cpp:561 src/slic3r/GUI/ConfigWizard.cpp:575
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115
 #: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:84
 #: src/libslic3r/PrintConfig.cpp:59 src/libslic3r/PrintConfig.cpp:66
@@ -90,47 +90,47 @@ msgstr ""
 msgid "mm"
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:71 src/libslic3r/PrintConfig.cpp:676
+#: src/slic3r/GUI/BedShapeDialog.cpp:88 src/libslic3r/PrintConfig.cpp:676
 msgid "Diameter"
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:72
+#: src/slic3r/GUI/BedShapeDialog.cpp:89
 msgid ""
 "Diameter of the print bed. It is assumed that origin (0,0) is located in the "
 "center."
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:76 src/slic3r/GUI/GUI_Preview.cpp:239
+#: src/slic3r/GUI/BedShapeDialog.cpp:93 src/slic3r/GUI/GUI_Preview.cpp:239
 #: src/libslic3r/GCode/PreviewData.cpp:175
 msgid "Custom"
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:80
+#: src/slic3r/GUI/BedShapeDialog.cpp:97
 msgid "Load shape from STL..."
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:126
+#: src/slic3r/GUI/BedShapeDialog.cpp:143
 msgid "Settings"
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:299
+#: src/slic3r/GUI/BedShapeDialog.cpp:316
 msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):"
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:316 src/slic3r/GUI/GUI_ObjectList.cpp:1320
+#: src/slic3r/GUI/BedShapeDialog.cpp:333 src/slic3r/GUI/GUI_ObjectList.cpp:1359
 msgid "Error! "
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:325
+#: src/slic3r/GUI/BedShapeDialog.cpp:342
 msgid "The selected file contains no geometry."
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:329
+#: src/slic3r/GUI/BedShapeDialog.cpp:346
 msgid ""
 "The selected file contains several disjoint areas. This is not supported."
 msgstr ""
 
-#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:510
+#: src/slic3r/GUI/BedShapeDialog.hpp:45 src/slic3r/GUI/ConfigWizard.cpp:524
 msgid "Bed Shape"
 msgstr ""
 
@@ -162,377 +162,379 @@ msgstr ""
 msgid "Finished"
 msgstr ""
 
-#: src/slic3r/GUI/ButtonsDescription.cpp:15
+#: src/slic3r/GUI/ButtonsDescription.cpp:16
 msgid "Buttons And Text Colors Description"
 msgstr ""
 
-#: src/slic3r/GUI/ButtonsDescription.cpp:40
+#: src/slic3r/GUI/ButtonsDescription.cpp:41
 msgid "Value is the same as the system value"
 msgstr ""
 
-#: src/slic3r/GUI/ButtonsDescription.cpp:57
+#: src/slic3r/GUI/ButtonsDescription.cpp:58
 msgid ""
 "Value was changed and is not equal to the system value or the last saved "
 "preset"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:17
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:18
 msgid "Upgrade"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:19
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:20
 msgid "Downgrade"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:21
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:22
 msgid "Before roll back"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:23
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:24
 msgid "User"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:26
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:27
 msgid "Unknown"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:38
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:39
 msgid "Active: "
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45
 msgid "slic3r version"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 src/slic3r/GUI/Preset.cpp:1252
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46 src/slic3r/GUI/Preset.cpp:1274
 msgid "print"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47
 msgid "filaments"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 src/slic3r/GUI/Preset.cpp:1256
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:48 src/slic3r/GUI/Preset.cpp:1278
 msgid "printer"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Tab.cpp:872
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52 src/slic3r/GUI/Tab.cpp:921
 msgid "vendor"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52
 msgid "version"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:53
 msgid "min slic3r version"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:54
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:55
 msgid "max slic3r version"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58
 msgid "model"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:58
 msgid "variants"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:69
-msgid "Incompatible with this Slic3r"
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:70
+#, possible-c-format
+msgid "Incompatible with this %s"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:72
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:73
 msgid "Activate"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:98
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:99
 msgid "Configuration Snapshots"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:111
+#: src/slic3r/GUI/ConfigWizard.cpp:118
 msgid "nozzle"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:115
+#: src/slic3r/GUI/ConfigWizard.cpp:122
 msgid "Alternate nozzles:"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:181
+#: src/slic3r/GUI/ConfigWizard.cpp:188
 msgid "All standard"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:182 src/slic3r/GUI/Tab.cpp:2910
+#: src/slic3r/GUI/ConfigWizard.cpp:189 src/slic3r/GUI/Tab.cpp:2986
 msgid "All"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:183 src/slic3r/GUI/Plater.cpp:413
+#: src/slic3r/GUI/ConfigWizard.cpp:190 src/slic3r/GUI/Plater.cpp:422
 #: src/libslic3r/GCode/PreviewData.cpp:162
 msgid "None"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:284
+#: src/slic3r/GUI/ConfigWizard.cpp:294
 #, possible-c-format
 msgid "Welcome to the %s %s"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:284
+#: src/slic3r/GUI/ConfigWizard.cpp:294
 msgid "Welcome"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:288 src/slic3r/GUI/GUI_App.cpp:632
+#: src/slic3r/GUI/ConfigWizard.cpp:298 src/slic3r/GUI/GUI_App.cpp:643
 #, possible-c-format
 msgid "Run %s"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:290
+#: src/slic3r/GUI/ConfigWizard.cpp:300
 #, possible-c-format
 msgid ""
 "Hello, welcome to %s! This %s helps you with the initial configuration; just "
 "a few settings and you will be ready to print."
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:295
+#: src/slic3r/GUI/ConfigWizard.cpp:305
 msgid ""
 "Remove user profiles - install from scratch (a snapshot will be taken "
 "beforehand)"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:326
+#: src/slic3r/GUI/ConfigWizard.cpp:336
 #, possible-c-format
 msgid "%s Family"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:363
+#: src/slic3r/GUI/ConfigWizard.cpp:373
 msgid "Custom Printer Setup"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:363
+#: src/slic3r/GUI/ConfigWizard.cpp:373
 msgid "Custom Printer"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:365
+#: src/slic3r/GUI/ConfigWizard.cpp:375
 msgid "Define a custom printer profile"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:367
+#: src/slic3r/GUI/ConfigWizard.cpp:377
 msgid "Custom profile name:"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:391
+#: src/slic3r/GUI/ConfigWizard.cpp:401
 msgid "Automatic updates"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:391
+#: src/slic3r/GUI/ConfigWizard.cpp:401
 msgid "Updates"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:399 src/slic3r/GUI/Preferences.cpp:59
+#: src/slic3r/GUI/ConfigWizard.cpp:409 src/slic3r/GUI/Preferences.cpp:61
 msgid "Check for application updates"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:402
+#: src/slic3r/GUI/ConfigWizard.cpp:413
 #, possible-c-format
 msgid ""
-"If enabled, Slic3r checks for new versions of %s online. When a new version "
-"becomes available, a notification is displayed at the next application "
-"startup (never during program usage). This is only a notification "
-"mechanisms, no automatic installation is done."
+"If enabled, %s checks for new application versions online. When a new "
+"version becomes available, a notification is displayed at the next "
+"application startup (never during program usage). This is only a "
+"notification mechanisms, no automatic installation is done."
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:408 src/slic3r/GUI/Preferences.cpp:67
+#: src/slic3r/GUI/ConfigWizard.cpp:419 src/slic3r/GUI/Preferences.cpp:69
 msgid "Update built-in Presets automatically"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:411 src/slic3r/GUI/Preferences.cpp:69
+#: src/slic3r/GUI/ConfigWizard.cpp:423
+#, possible-c-format
 msgid ""
-"If enabled, Slic3r downloads updates of built-in system presets in the "
-"background. These updates are downloaded into a separate temporary location. "
+"If enabled, %s downloads updates of built-in system presets in the "
+"background.These updates are downloaded into a separate temporary location."
 "When a new preset version becomes available it is offered at application "
 "startup."
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:412
+#: src/slic3r/GUI/ConfigWizard.cpp:426
 msgid ""
 "Updates are never applied without user's consent and never overwrite user's "
 "customized settings."
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:417
+#: src/slic3r/GUI/ConfigWizard.cpp:431
 msgid ""
 "Additionally a backup snapshot of the whole configuration is created before "
 "an update is applied."
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:424
+#: src/slic3r/GUI/ConfigWizard.cpp:438
 msgid "Other Vendors"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:426
+#: src/slic3r/GUI/ConfigWizard.cpp:440
 #, possible-c-format
 msgid "Pick another vendor supported by %s:"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:472
+#: src/slic3r/GUI/ConfigWizard.cpp:486
 msgid "Firmware Type"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:472 src/slic3r/GUI/Tab.cpp:1870
+#: src/slic3r/GUI/ConfigWizard.cpp:486 src/slic3r/GUI/Tab.cpp:1920
 msgid "Firmware"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:476
+#: src/slic3r/GUI/ConfigWizard.cpp:490
 msgid "Choose the type of firmware used by your printer."
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:510
+#: src/slic3r/GUI/ConfigWizard.cpp:524
 msgid "Bed Shape and Size"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:513
+#: src/slic3r/GUI/ConfigWizard.cpp:527
 msgid "Set the shape of your printer's bed."
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:527
+#: src/slic3r/GUI/ConfigWizard.cpp:541
 msgid "Filament and Nozzle Diameters"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:527
+#: src/slic3r/GUI/ConfigWizard.cpp:541
 msgid "Print Diameters"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:543
+#: src/slic3r/GUI/ConfigWizard.cpp:557
 msgid "Enter the diameter of your printer's hot end nozzle."
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:546
+#: src/slic3r/GUI/ConfigWizard.cpp:560
 msgid "Nozzle Diameter:"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:556
+#: src/slic3r/GUI/ConfigWizard.cpp:570
 msgid "Enter the diameter of your filament."
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:557
+#: src/slic3r/GUI/ConfigWizard.cpp:571
 msgid ""
 "Good precision is required, so use a caliper and do multiple measurements "
 "along the filament, then compute the average."
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:560
+#: src/slic3r/GUI/ConfigWizard.cpp:574
 msgid "Filament Diameter:"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:578
+#: src/slic3r/GUI/ConfigWizard.cpp:592
 msgid "Extruder and Bed Temperatures"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:578
+#: src/slic3r/GUI/ConfigWizard.cpp:592
 msgid "Temperatures"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:594
+#: src/slic3r/GUI/ConfigWizard.cpp:608
 msgid "Enter the temperature needed for extruding your filament."
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:595
+#: src/slic3r/GUI/ConfigWizard.cpp:609
 msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS."
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:598
+#: src/slic3r/GUI/ConfigWizard.cpp:612
 msgid "Extrusion Temperature:"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:599 src/slic3r/GUI/ConfigWizard.cpp:613
+#: src/slic3r/GUI/ConfigWizard.cpp:613 src/slic3r/GUI/ConfigWizard.cpp:627
 msgid "°C"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:608
+#: src/slic3r/GUI/ConfigWizard.cpp:622
 msgid ""
 "Enter the bed temperature needed for getting your filament to stick to your "
 "heated bed."
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:609
+#: src/slic3r/GUI/ConfigWizard.cpp:623
 msgid ""
 "A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have "
 "no heated bed."
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:612
+#: src/slic3r/GUI/ConfigWizard.cpp:626
 msgid "Bed Temperature:"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1017
+#: src/slic3r/GUI/ConfigWizard.cpp:1063
 msgid "Select all standard printers"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1020
+#: src/slic3r/GUI/ConfigWizard.cpp:1066
 msgid "< &Back"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1021
+#: src/slic3r/GUI/ConfigWizard.cpp:1067
 msgid "&Next >"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1022
+#: src/slic3r/GUI/ConfigWizard.cpp:1068
 msgid "&Finish"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1023 src/slic3r/GUI/FirmwareDialog.cpp:142
+#: src/slic3r/GUI/ConfigWizard.cpp:1069 src/slic3r/GUI/FirmwareDialog.cpp:147
 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:37
 #: src/slic3r/GUI/ProgressStatusBar.cpp:28
 msgid "Cancel"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1037
+#: src/slic3r/GUI/ConfigWizard.cpp:1083
 msgid "Prusa FFF Technology Printers"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1040
+#: src/slic3r/GUI/ConfigWizard.cpp:1086
 msgid "Prusa MSLA Technology Printers"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1127
+#: src/slic3r/GUI/ConfigWizard.cpp:1173
 msgid "Configuration Wizard"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1128
+#: src/slic3r/GUI/ConfigWizard.cpp:1174
 msgid "Configuration &Wizard"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1130
+#: src/slic3r/GUI/ConfigWizard.cpp:1176
 msgid "Configuration Assistant"
 msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1131
+#: src/slic3r/GUI/ConfigWizard.cpp:1177
 msgid "Configuration &Assistant"
 msgstr ""
 
-#: src/slic3r/GUI/Field.cpp:111
+#: src/slic3r/GUI/Field.cpp:105
 msgid "default value"
 msgstr ""
 
-#: src/slic3r/GUI/Field.cpp:114
+#: src/slic3r/GUI/Field.cpp:108
 msgid "parameter name"
 msgstr ""
 
-#: src/slic3r/GUI/Field.cpp:142
+#: src/slic3r/GUI/Field.cpp:136
 #, possible-c-format
 msgid "%s doesn't support percentage"
 msgstr ""
 
-#: src/slic3r/GUI/Field.cpp:156 src/slic3r/GUI/Field.cpp:179
+#: src/slic3r/GUI/Field.cpp:150 src/slic3r/GUI/Field.cpp:173
 msgid "Invalid numeric input."
 msgstr ""
 
-#: src/slic3r/GUI/Field.cpp:161
+#: src/slic3r/GUI/Field.cpp:155
 msgid "Input value is out of range"
 msgstr ""
 
-#: src/slic3r/GUI/Field.cpp:187
+#: src/slic3r/GUI/Field.cpp:181
 #, possible-c-format
 msgid ""
 "Do you mean %d%% instead of %d %s?\n"
@@ -540,35 +542,35 @@ msgid ""
 "or NO if you are sure that %d %s is a correct value."
 msgstr ""
 
-#: src/slic3r/GUI/Field.cpp:190
+#: src/slic3r/GUI/Field.cpp:184
 msgid "Parameter validation"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:141
+#: src/slic3r/GUI/FirmwareDialog.cpp:146
 msgid "Flash!"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:143
+#: src/slic3r/GUI/FirmwareDialog.cpp:148
 msgid "Flashing in progress. Please do not disconnect the printer!"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:187
+#: src/slic3r/GUI/FirmwareDialog.cpp:192
 msgid "Flashing failed: "
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:268
+#: src/slic3r/GUI/FirmwareDialog.cpp:273
 msgid "Flashing succeeded!"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:269
+#: src/slic3r/GUI/FirmwareDialog.cpp:274
 msgid "Flashing failed. Please see the avrdude log below."
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:270
+#: src/slic3r/GUI/FirmwareDialog.cpp:275
 msgid "Flashing cancelled."
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:308
+#: src/slic3r/GUI/FirmwareDialog.cpp:313
 #, possible-c-format
 msgid ""
 "This firmware hex file does not match the printer model.\n"
@@ -579,13 +581,13 @@ msgid ""
 "Please only continue if you are sure this is the right thing to do."
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:395 src/slic3r/GUI/FirmwareDialog.cpp:431
+#: src/slic3r/GUI/FirmwareDialog.cpp:400 src/slic3r/GUI/FirmwareDialog.cpp:436
 #, possible-c-format
 msgid ""
 "Multiple %s devices found. Please only connect one at a time for flashing."
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:412
+#: src/slic3r/GUI/FirmwareDialog.cpp:417
 #, possible-c-format
 msgid ""
 "The %s device was not found.\n"
@@ -593,89 +595,89 @@ msgid ""
 "connector ..."
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:525
+#: src/slic3r/GUI/FirmwareDialog.cpp:530
 #, possible-c-format
 msgid "The %s device could not have been found"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:603
+#: src/slic3r/GUI/FirmwareDialog.cpp:608
 #, possible-c-format
 msgid "Error accessing port at %s: %s"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:605
+#: src/slic3r/GUI/FirmwareDialog.cpp:610
 #, possible-c-format
 msgid "Error: %s"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:735
+#: src/slic3r/GUI/FirmwareDialog.cpp:740
 msgid "Firmware flasher"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:762
+#: src/slic3r/GUI/FirmwareDialog.cpp:765
 msgid "Firmware image:"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:766
+#: src/slic3r/GUI/FirmwareDialog.cpp:769
 msgid "Serial port:"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:768
+#: src/slic3r/GUI/FirmwareDialog.cpp:771
 msgid "Autodetected"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:769
+#: src/slic3r/GUI/FirmwareDialog.cpp:772
 msgid "Rescan"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:776
+#: src/slic3r/GUI/FirmwareDialog.cpp:779
 msgid "Progress:"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:779
+#: src/slic3r/GUI/FirmwareDialog.cpp:782
 msgid "Status:"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:780
+#: src/slic3r/GUI/FirmwareDialog.cpp:783
 msgid "Ready"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:800
+#: src/slic3r/GUI/FirmwareDialog.cpp:803
 msgid "Advanced: Output log"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:811
-#: src/slic3r/GUI/PrintHostDialogs.cpp:161
+#: src/slic3r/GUI/FirmwareDialog.cpp:814
+#: src/slic3r/GUI/PrintHostDialogs.cpp:160
 msgid "Close"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:859
+#: src/slic3r/GUI/FirmwareDialog.cpp:862
 msgid ""
 "Are you sure you want to cancel firmware flashing?\n"
 "This could leave your printer in an unusable state!"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:860
+#: src/slic3r/GUI/FirmwareDialog.cpp:863
 msgid "Confirmation"
 msgstr ""
 
-#: src/slic3r/GUI/FirmwareDialog.cpp:863
+#: src/slic3r/GUI/FirmwareDialog.cpp:866
 msgid "Cancelling..."
 msgstr ""
 
-#: src/slic3r/GUI/GLCanvas3D.cpp:714
+#: src/slic3r/GUI/GLCanvas3D.cpp:715
 msgid "Detected object outside print volume"
 msgstr ""
 
-#: src/slic3r/GUI/GLCanvas3D.cpp:715
+#: src/slic3r/GUI/GLCanvas3D.cpp:716
 msgid "Detected toolpath outside print volume"
 msgstr ""
 
-#: src/slic3r/GUI/GLCanvas3D.cpp:716
+#: src/slic3r/GUI/GLCanvas3D.cpp:717
 msgid "Some objects are not visible when editing supports"
 msgstr ""
 
-#: src/slic3r/GUI/GLCanvas3D.cpp:718
+#: src/slic3r/GUI/GLCanvas3D.cpp:719
 msgid ""
 "Detected object outside print volume\n"
 "Resolve a clash to continue slicing/export process correctly"
@@ -743,104 +745,128 @@ msgstr ""
 msgid "Scale (%)"
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:882
-msgid "Left mouse click - add point"
-msgstr ""
-
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:883
-msgid "Right mouse click - remove point"
-msgstr ""
-
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:884
-msgid "Shift + Left (+ drag) - select point(s)"
-msgstr ""
-
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:891
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:892
 msgid "Head diameter: "
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:903
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:905
 msgid "Lock supports under new islands"
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:907
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:909
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1291
 msgid "Remove selected points"
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:964
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:913
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:966
 msgid "Remove all points"
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:916
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:918
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1294
 msgid "Apply changes"
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:921
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:923
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1295
 msgid "Discard changes"
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:929
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:931
 msgid "Minimal points distance: "
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:940
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:942
 msgid "Support points density: "
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:954
-msgid "Auto-generate points [A]"
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:956
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1297
+msgid "Auto-generate points"
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:960
-msgid "Manual editing [M]"
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:962
+msgid "Manual editing"
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:969
-msgid "No points  (will be autogenerated)"
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:982
+msgid "Reset direction"
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:970
-msgid "Autogenerated points (no modifications)"
-msgstr ""
-
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:971
-msgid "User-modified points"
-msgstr ""
-
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:972
-msgid "Generation in progress..."
-msgstr ""
-
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:980
-msgid "Reset direction [R] "
-msgstr ""
-
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1039
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1049
 msgid "SLA Support Points [L]"
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1066
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1076
 msgid "Do you want to save your manually edited support points ?\n"
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1067
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1077
 msgid "Save changes?"
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1220
 msgid ""
 "Autogeneration will erase all manually edited points.\n"
 "\n"
 "Are you sure you want to do it?\n"
 msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 src/slic3r/GUI/GUI.cpp:288
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1222 src/slic3r/GUI/GUI.cpp:288
 #: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328
 msgid "Warning"
 msgstr ""
 
-#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2721
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1254
+msgid "SLA gizmo keyboard shortcuts"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1283
+msgid "Add point"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1284
+msgid "Remove point"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1285
+msgid "Move point"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1286
+msgid "Add point to selection"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1287
+msgid "Remove point from selection"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1288
+msgid "Select by rectangle"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1289
+msgid "Deselect by rectangle"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1290
+msgid "Select all points"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1292
+msgid "Move clipping plane"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1293
+msgid "Reset clipping plane"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1296
+msgid "Switch to editing mode"
+msgstr ""
+
+#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2796
 msgid "It's impossible to print multi-part object(s) with SLA technology."
 msgstr ""
 
@@ -848,8 +874,8 @@ msgstr ""
 msgid "Please check and fix your object list."
 msgstr ""
 
-#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:711
-#: src/slic3r/GUI/Tab.cpp:2723
+#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:728
+#: src/slic3r/GUI/Tab.cpp:2798
 msgid "Attention!"
 msgstr ""
 
@@ -857,203 +883,207 @@ msgstr ""
 msgid "Notice"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:352
+#: src/slic3r/GUI/GUI_App.cpp:363
 msgid "Changing of an application language"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:360 src/slic3r/GUI/GUI_App.cpp:369
+#: src/slic3r/GUI/GUI_App.cpp:371 src/slic3r/GUI/GUI_App.cpp:380
 msgid "Recreating"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:373
+#: src/slic3r/GUI/GUI_App.cpp:384
 msgid "Loading of current presets"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:381
+#: src/slic3r/GUI/GUI_App.cpp:392
 msgid "Loading of a mode view"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:463
+#: src/slic3r/GUI/GUI_App.cpp:474
 msgid "Choose one file (3MF):"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:475
+#: src/slic3r/GUI/GUI_App.cpp:486
 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:488
+#: src/slic3r/GUI/GUI_App.cpp:499
 msgid "Array of language names and identifiers should have the same size."
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:498
+#: src/slic3r/GUI/GUI_App.cpp:509
 msgid "Select the language"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:498
+#: src/slic3r/GUI/GUI_App.cpp:509
 msgid "Language"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:568 src/slic3r/GUI/GUI_ObjectList.cpp:1135
+#: src/slic3r/GUI/GUI_App.cpp:579 src/slic3r/GUI/GUI_ObjectList.cpp:1175
 #: src/libslic3r/PrintConfig.cpp:298
 msgid "Default"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:635
+#: src/slic3r/GUI/GUI_App.cpp:646
 msgid "&Configuration Snapshots"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:635
+#: src/slic3r/GUI/GUI_App.cpp:646
 msgid "Inspect / activate configuration snapshots"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:636
+#: src/slic3r/GUI/GUI_App.cpp:647
 msgid "Take Configuration &Snapshot"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:636
+#: src/slic3r/GUI/GUI_App.cpp:647
 msgid "Capture a configuration snapshot"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:639
+#: src/slic3r/GUI/GUI_App.cpp:650
 msgid "&Preferences"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:645
+#: src/slic3r/GUI/GUI_App.cpp:656
 msgid "Application preferences"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:648 src/slic3r/GUI/wxExtensions.cpp:2457
+#: src/slic3r/GUI/GUI_App.cpp:659 src/slic3r/GUI/wxExtensions.cpp:2374
 msgid "Simple"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:648
+#: src/slic3r/GUI/GUI_App.cpp:659
 msgid "Simple View Mode"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:649 src/slic3r/GUI/GUI_ObjectList.cpp:76
-#: src/slic3r/GUI/Tab.cpp:977 src/slic3r/GUI/Tab.cpp:992
-#: src/slic3r/GUI/Tab.cpp:1090 src/slic3r/GUI/Tab.cpp:1093
-#: src/slic3r/GUI/Tab.cpp:1466 src/slic3r/GUI/Tab.cpp:1890
-#: src/slic3r/GUI/Tab.cpp:3349 src/slic3r/GUI/wxExtensions.cpp:2458
-#: src/libslic3r/PrintConfig.cpp:72 src/libslic3r/PrintConfig.cpp:186
-#: src/libslic3r/PrintConfig.cpp:349 src/libslic3r/PrintConfig.cpp:987
-#: src/libslic3r/PrintConfig.cpp:2173
+#: src/slic3r/GUI/GUI_App.cpp:660 src/slic3r/GUI/GUI_ObjectList.cpp:76
+#: src/slic3r/GUI/GUI_ObjectList.cpp:458 src/slic3r/GUI/Tab.cpp:1026
+#: src/slic3r/GUI/Tab.cpp:1041 src/slic3r/GUI/Tab.cpp:1139
+#: src/slic3r/GUI/Tab.cpp:1142 src/slic3r/GUI/Tab.cpp:1515
+#: src/slic3r/GUI/Tab.cpp:1940 src/slic3r/GUI/Tab.cpp:3435
+#: src/slic3r/GUI/wxExtensions.cpp:2375 src/libslic3r/PrintConfig.cpp:72
+#: src/libslic3r/PrintConfig.cpp:186 src/libslic3r/PrintConfig.cpp:349
+#: src/libslic3r/PrintConfig.cpp:987 src/libslic3r/PrintConfig.cpp:2173
 msgid "Advanced"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:649
+#: src/slic3r/GUI/GUI_App.cpp:660
 msgid "Advanced View Mode"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:650 src/slic3r/GUI/wxExtensions.cpp:2459
+#: src/slic3r/GUI/GUI_App.cpp:661 src/slic3r/GUI/wxExtensions.cpp:2376
 msgid "Expert"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:650
+#: src/slic3r/GUI/GUI_App.cpp:661
 msgid "Expert View Mode"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:655
+#: src/slic3r/GUI/GUI_App.cpp:666
 msgid "Mode"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:655
-msgid "Slic3r View Mode"
+#: src/slic3r/GUI/GUI_App.cpp:666
+#, possible-c-format
+msgid "%s View Mode"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:657
+#: src/slic3r/GUI/GUI_App.cpp:668
 msgid "Change Application &Language"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:659
+#: src/slic3r/GUI/GUI_App.cpp:670
 msgid "Flash printer &firmware"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:659
+#: src/slic3r/GUI/GUI_App.cpp:670
 msgid "Upload a firmware image into an Arduino based printer"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:671
+#: src/slic3r/GUI/GUI_App.cpp:682
 msgid "Taking configuration snapshot"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:671
+#: src/slic3r/GUI/GUI_App.cpp:682
 msgid "Snapshot name"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:708
+#: src/slic3r/GUI/GUI_App.cpp:725
 msgid "Application will be restarted after language change."
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:709
+#: src/slic3r/GUI/GUI_App.cpp:726
 msgid "3D-Scene will be cleaned."
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:710
+#: src/slic3r/GUI/GUI_App.cpp:727
 msgid "Please, check your changes before."
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:738
+#: src/slic3r/GUI/GUI_App.cpp:754
 msgid "&Configuration"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:758
+#: src/slic3r/GUI/GUI_App.cpp:774
 msgid "You have unsaved changes "
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:758
+#: src/slic3r/GUI/GUI_App.cpp:774
 msgid ". Discard changes and continue anyway?"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:759
+#: src/slic3r/GUI/GUI_App.cpp:775
 msgid "Unsaved Presets"
 msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:68
-#: src/libslic3r/PrintConfig.cpp:56 src/libslic3r/PrintConfig.cpp:149
-#: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:437
-#: src/libslic3r/PrintConfig.cpp:445 src/libslic3r/PrintConfig.cpp:841
-#: src/libslic3r/PrintConfig.cpp:1025 src/libslic3r/PrintConfig.cpp:1304
-#: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1551
-#: src/libslic3r/PrintConfig.cpp:1986 src/libslic3r/PrintConfig.cpp:2042
+#: src/slic3r/GUI/GUI_ObjectList.cpp:450 src/libslic3r/PrintConfig.cpp:56
+#: src/libslic3r/PrintConfig.cpp:149 src/libslic3r/PrintConfig.cpp:380
+#: src/libslic3r/PrintConfig.cpp:437 src/libslic3r/PrintConfig.cpp:445
+#: src/libslic3r/PrintConfig.cpp:841 src/libslic3r/PrintConfig.cpp:1025
+#: src/libslic3r/PrintConfig.cpp:1304 src/libslic3r/PrintConfig.cpp:1370
+#: src/libslic3r/PrintConfig.cpp:1551 src/libslic3r/PrintConfig.cpp:1986
+#: src/libslic3r/PrintConfig.cpp:2042
 msgid "Layers and Perimeters"
 msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:69
-#: src/slic3r/GUI/Plater.cpp:430 src/slic3r/GUI/Tab.cpp:981
-#: src/slic3r/GUI/Tab.cpp:982 src/slic3r/GUI/Tab.cpp:1311
-#: src/libslic3r/PrintConfig.cpp:166 src/libslic3r/PrintConfig.cpp:388
-#: src/libslic3r/PrintConfig.cpp:728 src/libslic3r/PrintConfig.cpp:742
-#: src/libslic3r/PrintConfig.cpp:779 src/libslic3r/PrintConfig.cpp:932
-#: src/libslic3r/PrintConfig.cpp:942 src/libslic3r/PrintConfig.cpp:960
-#: src/libslic3r/PrintConfig.cpp:978 src/libslic3r/PrintConfig.cpp:997
-#: src/libslic3r/PrintConfig.cpp:1658 src/libslic3r/PrintConfig.cpp:1675
+#: src/slic3r/GUI/GUI_ObjectList.cpp:451 src/slic3r/GUI/Plater.cpp:439
+#: src/slic3r/GUI/Tab.cpp:1030 src/slic3r/GUI/Tab.cpp:1031
+#: src/slic3r/GUI/Tab.cpp:1360 src/libslic3r/PrintConfig.cpp:166
+#: src/libslic3r/PrintConfig.cpp:388 src/libslic3r/PrintConfig.cpp:728
+#: src/libslic3r/PrintConfig.cpp:742 src/libslic3r/PrintConfig.cpp:779
+#: src/libslic3r/PrintConfig.cpp:932 src/libslic3r/PrintConfig.cpp:942
+#: src/libslic3r/PrintConfig.cpp:960 src/libslic3r/PrintConfig.cpp:978
+#: src/libslic3r/PrintConfig.cpp:997 src/libslic3r/PrintConfig.cpp:1658
+#: src/libslic3r/PrintConfig.cpp:1675
 msgid "Infill"
 msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:70
-#: src/slic3r/GUI/GUI_Preview.cpp:236 src/slic3r/GUI/Tab.cpp:1010
-#: src/slic3r/GUI/Tab.cpp:1011 src/libslic3r/PrintConfig.cpp:333
-#: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1779
-#: src/libslic3r/PrintConfig.cpp:1785 src/libslic3r/PrintConfig.cpp:1793
-#: src/libslic3r/PrintConfig.cpp:1805 src/libslic3r/PrintConfig.cpp:1815
-#: src/libslic3r/PrintConfig.cpp:1823 src/libslic3r/PrintConfig.cpp:1838
-#: src/libslic3r/PrintConfig.cpp:1859 src/libslic3r/PrintConfig.cpp:1870
-#: src/libslic3r/PrintConfig.cpp:1886 src/libslic3r/PrintConfig.cpp:1895
-#: src/libslic3r/PrintConfig.cpp:1904 src/libslic3r/PrintConfig.cpp:1915
-#: src/libslic3r/PrintConfig.cpp:1929 src/libslic3r/PrintConfig.cpp:1937
-#: src/libslic3r/PrintConfig.cpp:1938 src/libslic3r/PrintConfig.cpp:1947
-#: src/libslic3r/PrintConfig.cpp:1955 src/libslic3r/PrintConfig.cpp:1969
-#: src/libslic3r/GCode/PreviewData.cpp:172
+#: src/slic3r/GUI/GUI_ObjectList.cpp:452 src/slic3r/GUI/GUI_Preview.cpp:236
+#: src/slic3r/GUI/Tab.cpp:1059 src/slic3r/GUI/Tab.cpp:1060
+#: src/libslic3r/PrintConfig.cpp:333 src/libslic3r/PrintConfig.cpp:1431
+#: src/libslic3r/PrintConfig.cpp:1779 src/libslic3r/PrintConfig.cpp:1785
+#: src/libslic3r/PrintConfig.cpp:1793 src/libslic3r/PrintConfig.cpp:1805
+#: src/libslic3r/PrintConfig.cpp:1815 src/libslic3r/PrintConfig.cpp:1823
+#: src/libslic3r/PrintConfig.cpp:1838 src/libslic3r/PrintConfig.cpp:1859
+#: src/libslic3r/PrintConfig.cpp:1870 src/libslic3r/PrintConfig.cpp:1886
+#: src/libslic3r/PrintConfig.cpp:1895 src/libslic3r/PrintConfig.cpp:1904
+#: src/libslic3r/PrintConfig.cpp:1915 src/libslic3r/PrintConfig.cpp:1929
+#: src/libslic3r/PrintConfig.cpp:1937 src/libslic3r/PrintConfig.cpp:1938
+#: src/libslic3r/PrintConfig.cpp:1947 src/libslic3r/PrintConfig.cpp:1955
+#: src/libslic3r/PrintConfig.cpp:1969 src/libslic3r/GCode/PreviewData.cpp:172
 msgid "Support material"
 msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:72
-#: src/slic3r/GUI/Tab.cpp:1070 src/slic3r/GUI/Tab.cpp:1794
-#: src/libslic3r/PrintConfig.cpp:455 src/libslic3r/PrintConfig.cpp:953
-#: src/libslic3r/PrintConfig.cpp:1339 src/libslic3r/PrintConfig.cpp:1667
-#: src/libslic3r/PrintConfig.cpp:1851 src/libslic3r/PrintConfig.cpp:1877
-#: src/libslic3r/PrintConfig.cpp:2149 src/libslic3r/PrintConfig.cpp:2157
+#: src/slic3r/GUI/GUI_ObjectList.cpp:454 src/slic3r/GUI/Tab.cpp:1119
+#: src/slic3r/GUI/Tab.cpp:1844 src/libslic3r/PrintConfig.cpp:455
+#: src/libslic3r/PrintConfig.cpp:953 src/libslic3r/PrintConfig.cpp:1339
+#: src/libslic3r/PrintConfig.cpp:1667 src/libslic3r/PrintConfig.cpp:1851
+#: src/libslic3r/PrintConfig.cpp:1877 src/libslic3r/PrintConfig.cpp:2149
+#: src/libslic3r/PrintConfig.cpp:2157
 msgid "Extruders"
 msgstr ""
 
@@ -1061,41 +1091,42 @@ msgstr ""
 msgid "Pad and Support"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:71 src/slic3r/GUI/GUI_Preview.cpp:215
-#: src/slic3r/GUI/Tab.cpp:1035 src/libslic3r/PrintConfig.cpp:198
-#: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:870
-#: src/libslic3r/PrintConfig.cpp:998 src/libslic3r/PrintConfig.cpp:1360
-#: src/libslic3r/PrintConfig.cpp:1597 src/libslic3r/PrintConfig.cpp:1646
-#: src/libslic3r/PrintConfig.cpp:1697 src/libslic3r/PrintConfig.cpp:2028
+#: src/slic3r/GUI/GUI_ObjectList.cpp:71 src/slic3r/GUI/GUI_ObjectList.cpp:453
+#: src/slic3r/GUI/GUI_Preview.cpp:215 src/slic3r/GUI/Tab.cpp:1084
+#: src/libslic3r/PrintConfig.cpp:198 src/libslic3r/PrintConfig.cpp:425
+#: src/libslic3r/PrintConfig.cpp:870 src/libslic3r/PrintConfig.cpp:998
+#: src/libslic3r/PrintConfig.cpp:1360 src/libslic3r/PrintConfig.cpp:1597
+#: src/libslic3r/PrintConfig.cpp:1646 src/libslic3r/PrintConfig.cpp:1697
+#: src/libslic3r/PrintConfig.cpp:2028
 msgid "Speed"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:73 src/libslic3r/PrintConfig.cpp:415
-#: src/libslic3r/PrintConfig.cpp:522 src/libslic3r/PrintConfig.cpp:829
-#: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1348
-#: src/libslic3r/PrintConfig.cpp:1687 src/libslic3r/PrintConfig.cpp:1860
-#: src/libslic3r/PrintConfig.cpp:2017
+#: src/slic3r/GUI/GUI_ObjectList.cpp:73 src/slic3r/GUI/GUI_ObjectList.cpp:455
+#: src/libslic3r/PrintConfig.cpp:415 src/libslic3r/PrintConfig.cpp:522
+#: src/libslic3r/PrintConfig.cpp:829 src/libslic3r/PrintConfig.cpp:961
+#: src/libslic3r/PrintConfig.cpp:1348 src/libslic3r/PrintConfig.cpp:1687
+#: src/libslic3r/PrintConfig.cpp:1860 src/libslic3r/PrintConfig.cpp:2017
 msgid "Extrusion Width"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:78 src/slic3r/GUI/Plater.cpp:409
-#: src/slic3r/GUI/Tab.cpp:3311 src/slic3r/GUI/Tab.cpp:3312
-#: src/libslic3r/PrintConfig.cpp:2361 src/libslic3r/PrintConfig.cpp:2368
-#: src/libslic3r/PrintConfig.cpp:2377 src/libslic3r/PrintConfig.cpp:2386
-#: src/libslic3r/PrintConfig.cpp:2396 src/libslic3r/PrintConfig.cpp:2422
-#: src/libslic3r/PrintConfig.cpp:2429 src/libslic3r/PrintConfig.cpp:2440
-#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2459
-#: src/libslic3r/PrintConfig.cpp:2469 src/libslic3r/PrintConfig.cpp:2478
-#: src/libslic3r/PrintConfig.cpp:2488 src/libslic3r/PrintConfig.cpp:2498
-#: src/libslic3r/PrintConfig.cpp:2506
+#: src/slic3r/GUI/GUI_ObjectList.cpp:78 src/slic3r/GUI/GUI_ObjectList.cpp:460
+#: src/slic3r/GUI/Plater.cpp:418 src/slic3r/GUI/Tab.cpp:3397
+#: src/slic3r/GUI/Tab.cpp:3398 src/libslic3r/PrintConfig.cpp:2361
+#: src/libslic3r/PrintConfig.cpp:2368 src/libslic3r/PrintConfig.cpp:2377
+#: src/libslic3r/PrintConfig.cpp:2386 src/libslic3r/PrintConfig.cpp:2396
+#: src/libslic3r/PrintConfig.cpp:2422 src/libslic3r/PrintConfig.cpp:2429
+#: src/libslic3r/PrintConfig.cpp:2440 src/libslic3r/PrintConfig.cpp:2450
+#: src/libslic3r/PrintConfig.cpp:2459 src/libslic3r/PrintConfig.cpp:2469
+#: src/libslic3r/PrintConfig.cpp:2478 src/libslic3r/PrintConfig.cpp:2488
+#: src/libslic3r/PrintConfig.cpp:2498 src/libslic3r/PrintConfig.cpp:2506
 msgid "Supports"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:79 src/slic3r/GUI/Tab.cpp:3339
-#: src/slic3r/GUI/Tab.cpp:3340 src/libslic3r/PrintConfig.cpp:2514
-#: src/libslic3r/PrintConfig.cpp:2521 src/libslic3r/PrintConfig.cpp:2535
-#: src/libslic3r/PrintConfig.cpp:2545 src/libslic3r/PrintConfig.cpp:2558
-#: src/libslic3r/PrintConfig.cpp:2567
+#: src/slic3r/GUI/GUI_ObjectList.cpp:79 src/slic3r/GUI/GUI_ObjectList.cpp:461
+#: src/slic3r/GUI/Tab.cpp:3425 src/slic3r/GUI/Tab.cpp:3426
+#: src/libslic3r/PrintConfig.cpp:2514 src/libslic3r/PrintConfig.cpp:2521
+#: src/libslic3r/PrintConfig.cpp:2535 src/libslic3r/PrintConfig.cpp:2545
+#: src/libslic3r/PrintConfig.cpp:2558 src/libslic3r/PrintConfig.cpp:2567
 msgid "Pad"
 msgstr ""
 
@@ -1141,217 +1172,219 @@ msgstr ""
 msgid "Right button click the icon to fix STL through Netfabb"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:281 src/slic3r/GUI/Tab.cpp:1430
+#: src/slic3r/GUI/GUI_ObjectList.cpp:281 src/slic3r/GUI/Tab.cpp:1479
 #: src/libslic3r/PrintConfig.cpp:454
 msgid "Extruder"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:751 src/slic3r/GUI/GUI_ObjectList.cpp:1031
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1037
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1267
+#: src/slic3r/GUI/GUI_ObjectList.cpp:791 src/slic3r/GUI/GUI_ObjectList.cpp:1071
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1077
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1307
 #, possible-c-format
 msgid "Quick Add Settings (%s)"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:814
+#: src/slic3r/GUI/GUI_ObjectList.cpp:854
 msgid "Select showing settings"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:942
+#: src/slic3r/GUI/GUI_ObjectList.cpp:982
 msgid "Load"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:947 src/slic3r/GUI/GUI_ObjectList.cpp:979
-#: src/slic3r/GUI/GUI_ObjectList.cpp:982
+#: src/slic3r/GUI/GUI_ObjectList.cpp:987 src/slic3r/GUI/GUI_ObjectList.cpp:1019
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1022
 msgid "Box"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:947
+#: src/slic3r/GUI/GUI_ObjectList.cpp:987
 msgid "Cylinder"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:947
+#: src/slic3r/GUI/GUI_ObjectList.cpp:987
 msgid "Sphere"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:947
+#: src/slic3r/GUI/GUI_ObjectList.cpp:987
 msgid "Slab"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:958 src/slic3r/GUI/GUI_ObjectList.cpp:974
+#: src/slic3r/GUI/GUI_ObjectList.cpp:998 src/slic3r/GUI/GUI_ObjectList.cpp:1014
 msgid "Add part"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:959
+#: src/slic3r/GUI/GUI_ObjectList.cpp:999
 msgid "Add modifier"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:960 src/slic3r/GUI/GUI_ObjectList.cpp:978
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1000
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1018
 msgid "Add support enforcer"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:961 src/slic3r/GUI/GUI_ObjectList.cpp:981
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1001
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1021
 msgid "Add support blocker"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1002
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1042
 msgid "Split to parts"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1010
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1050
 msgid "Add settings"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1077
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1117
 msgid "Change type"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1084
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1221
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1124
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1261
 msgid "Set as a Separated Object"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1092
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1132
 msgid "Rename"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1102
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1142
 msgid "Fix through the Netfabb"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1109 src/slic3r/GUI/Plater.cpp:2883
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1149 src/slic3r/GUI/Plater.cpp:2927
 msgid "Export as STL"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1116
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1156
 msgid "Change extruder"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1141
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1181
 msgid "Select new extruder for the object/part"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1147 src/slic3r/GUI/Plater.cpp:2847
-#: src/slic3r/GUI/Plater.cpp:2865 src/slic3r/GUI/Tab.cpp:2861
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1187 src/slic3r/GUI/Plater.cpp:2891
+#: src/slic3r/GUI/Plater.cpp:2909 src/slic3r/GUI/Tab.cpp:2937
 msgid "Delete"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1221
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1261
 msgid "Set as a Separated Objects"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1442
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1479
 msgid "Generic"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1582
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1617
 msgid "You can't delete the last solid part from object."
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1599
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1634
 msgid "You can't delete the last intance from object."
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1626 src/slic3r/GUI/Plater.cpp:2235
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1660 src/slic3r/GUI/Plater.cpp:2279
 msgid ""
 "The selected object couldn't be split because it contains only one part."
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1742
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1768
 msgid "Group manipulation"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1754
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1780
 msgid "Object manipulation"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1764
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1790
 msgid "Object Settings to modify"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1768
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1794
 msgid "Part Settings to modify"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1777
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1803
 msgid "Part manipulation"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1783
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1809
 msgid "Instance manipulation"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2307
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2333
 msgid "Object or Instance"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2307
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2333
 msgid "Part"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2309
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2335
 msgid "Unsupported selection"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2310
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2336
 #, possible-c-format
 msgid "You started your selection with %s Item."
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2311
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2337
 #, possible-c-format
 msgid "In this mode you can select only other %s Items%s"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2314
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2340
 msgid "of a current Object"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2319
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2392 src/slic3r/GUI/Plater.cpp:117
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2345
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2418 src/slic3r/GUI/Plater.cpp:118
 msgid "Info"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2433
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2459
 msgid "You can't change a type of the last solid part of the object."
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2440
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2466
 msgid "Select type of part"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2605
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2630
 msgid "Enter new name"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2605
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2630
 msgid "Renaming"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2621
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2699 src/slic3r/GUI/Tab.cpp:3192
-#: src/slic3r/GUI/Tab.cpp:3196
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2646
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2742 src/slic3r/GUI/Tab.cpp:3278
+#: src/slic3r/GUI/Tab.cpp:3282
 msgid "The supplied name is not valid;"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2622
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2700 src/slic3r/GUI/Tab.cpp:3193
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2647
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2743 src/slic3r/GUI/Tab.cpp:3279
 msgid "the following characters are not allowed:"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2720
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2763
 msgid "Set extruder for selected items"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2721
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2764
 msgid "Select extruder number for selected objects and/or parts"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2734
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2777
 msgid "Select extruder number:"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2735
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2778
 msgid "This extruder will be set for selected items"
 msgstr ""
 
@@ -1364,33 +1397,33 @@ msgid "Object name"
 msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:160
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:158
 msgid "Position"
 msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:116
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:159
 msgid "Rotation"
 msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:117
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:201
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:221
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:199
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:219
 #: src/libslic3r/PrintConfig.cpp:3075
 msgid "Scale"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:162
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:160
 msgid "Scale factors"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:200
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:220
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:198
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:218
 #: src/libslic3r/PrintConfig.cpp:3060
 msgid "Rotate"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:219
+#: src/slic3r/GUI/GUI_ObjectManipulation.cpp:217
 msgid "Translate"
 msgstr ""
 
@@ -1402,7 +1435,7 @@ msgstr ""
 msgid "View"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:525
+#: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:537
 #: src/libslic3r/GCode/PreviewData.cpp:394
 msgid "Feature type"
 msgstr ""
@@ -1420,12 +1453,12 @@ msgid "Volumetric flow rate"
 msgstr ""
 
 #: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/GUI_Preview.cpp:315
-#: src/slic3r/GUI/GUI_Preview.cpp:469 src/slic3r/GUI/GUI_Preview.cpp:525
-#: src/slic3r/GUI/GUI_Preview.cpp:701 src/libslic3r/GCode/PreviewData.cpp:404
+#: src/slic3r/GUI/GUI_Preview.cpp:481 src/slic3r/GUI/GUI_Preview.cpp:537
+#: src/slic3r/GUI/GUI_Preview.cpp:713 src/libslic3r/GCode/PreviewData.cpp:404
 msgid "Tool"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/GUI_Preview.cpp:523
+#: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/GUI_Preview.cpp:535
 #: src/libslic3r/GCode/PreviewData.cpp:406
 msgid "Color Print"
 msgstr ""
@@ -1473,7 +1506,7 @@ msgstr ""
 msgid "Gap fill"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1001
+#: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1050
 #: src/libslic3r/GCode/PreviewData.cpp:171
 msgid "Skirt"
 msgstr ""
@@ -1483,7 +1516,7 @@ msgstr ""
 msgid "Support material interface"
 msgstr ""
 
-#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1081
+#: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1130
 #: src/libslic3r/GCode/PreviewData.cpp:174
 msgid "Wipe tower"
 msgstr ""
@@ -1504,254 +1537,254 @@ msgstr ""
 msgid "Shells"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 src/slic3r/GUI/MainFrame.cpp:491
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 src/slic3r/GUI/MainFrame.cpp:516
 msgid "Keyboard Shortcuts"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:100
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:105
 msgid "Open project STL/OBJ/AMF/3MF with config, delete bed"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:101
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:106
 msgid "Import STL/OBJ/AMF/3MF without config, keep bed"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:102
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:107
 msgid "Load Config from .ini/amf/3mf/gcode"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 src/slic3r/GUI/Plater.cpp:724
-#: src/slic3r/GUI/Plater.cpp:3704 src/libslic3r/PrintConfig.cpp:2962
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/Plater.cpp:733
+#: src/slic3r/GUI/Plater.cpp:3748 src/libslic3r/PrintConfig.cpp:2962
 msgid "Export G-code"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:104
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:109
 msgid "Save project (3MF)"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:105
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:110
 msgid "Load Config from .ini/amf/3mf/gcode and merge"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:106
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:111
 msgid "(Re)slice"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:107
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:112
 msgid "Quick slice"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/MainFrame.cpp:326
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:113 src/slic3r/GUI/MainFrame.cpp:349
 msgid "Repeat last quick slice"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:109
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:114
 msgid "Select Plater Tab"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:110
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:115
 msgid "Quick slice and Save as"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:111
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:116
 msgid "Select Print Settings Tab"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:112
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:117
 msgid "Select Filament Settings Tab"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:113
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:118
 msgid "Select Printer Settings Tab"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:114
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:119
 msgid "Switch to 3D"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:115
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:120
 msgid "Switch to Preview"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Preferences.cpp:10
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:121 src/slic3r/GUI/Preferences.cpp:10
 msgid "Preferences"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:117
-#: src/slic3r/GUI/PrintHostDialogs.cpp:134
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:122
+#: src/slic3r/GUI/PrintHostDialogs.cpp:135
 msgid "Print host upload queue"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:118
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:123
 msgid "Camera view "
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:119
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:124
 msgid "Add Instance to selected object "
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:120
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:125
 msgid "Remove Instance from selected object"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:121
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:126
 msgid "Show keyboard shortcuts list"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:122
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:127
 msgid "Select multiple object/Move multiple object"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:124
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:129
 msgid "Main Shortcuts"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:130
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:135
 msgid "Arrange"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:131
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:136
 msgid "Select All objects"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:132
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:137
 msgid "Delete selected"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:133
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:138
 msgid "Delete All"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:134
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:139
 msgid "Copy to clipboard"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:135
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:140
 msgid "Paste from clipboard"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:136
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:141
 msgid "Gizmo move"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:137
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:142
 msgid "Gizmo scale"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:138
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:143
 msgid "Gizmo rotate"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:139
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:144
 msgid "Gizmo cut"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:140
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:145
 msgid "Gizmo Place face on bed"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:141
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:146
 msgid "Gizmo SLA support points"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:142
-#, possible-c-format
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:147
+#, no-c-format
 msgid ""
 "Press to snap by 5% in Gizmo scale\n"
 "or by 1mm in Gizmo move"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:143
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:148
 msgid ""
 "Press to scale or rotate selected objects\n"
 "around their own center"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:144
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:149
 msgid "Zoom to Bed"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:145
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:150
 msgid "Zoom to all objects in scene, if none selected"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:146
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:151
 msgid "Zoom to selected object"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:147
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:152
 msgid "Zoom in"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:148
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:153
 msgid "Zoom out"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:149
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:154
 msgid "Unselect gizmo, keep object selection"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:151
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:156
 msgid "Plater Shortcuts"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:166
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:177
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:171
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:182
 msgid "Arrow Up"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:166
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:168
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:171
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:173
 msgid "Upper Layer"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:167
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:178
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:172
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:183
 msgid "Arrow Down"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:167
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:169
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:172
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:174
 msgid "Lower Layer"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:171
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:176
 msgid "Preview Shortcuts"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:177
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:182
 msgid "Move current slider thumb Up"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:178
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:183
 msgid "Move current slider thumb Down"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:179
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:184
 msgid "Arrow Left"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:179
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:184
 msgid "Set upper thumb to current slider thumb"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:180
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:185
 msgid "Arrow Right"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:180
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:185
 msgid "Set lower thumb to current slider thumb"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:181
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:186
 msgid "Add color change marker for current layer"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:182
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:187
 msgid "Delete color change marker for current layer"
 msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:184
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:189
 msgid "Layers Slider Shortcuts"
 msgstr ""
 
@@ -1764,1042 +1797,1068 @@ msgstr ""
 msgid "Plater"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:273
+#: src/slic3r/GUI/MainFrame.cpp:296
 msgid "&Open Project"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:273
+#: src/slic3r/GUI/MainFrame.cpp:296
 msgid "Open a project file"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:275
+#: src/slic3r/GUI/MainFrame.cpp:298
 msgid "&Save Project"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:275
+#: src/slic3r/GUI/MainFrame.cpp:298
 msgid "Save current project file"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:277
+#: src/slic3r/GUI/MainFrame.cpp:300
 msgid "Save Project &as"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:277
+#: src/slic3r/GUI/MainFrame.cpp:300
 msgid "Save current project file as"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:283
+#: src/slic3r/GUI/MainFrame.cpp:306
 msgid "Import STL/OBJ/AM&F/3MF"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:283
+#: src/slic3r/GUI/MainFrame.cpp:306
 msgid "Load a model"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:286
+#: src/slic3r/GUI/MainFrame.cpp:309
 msgid "Import &Config"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:286
+#: src/slic3r/GUI/MainFrame.cpp:309
 msgid "Load exported configuration file"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:288
+#: src/slic3r/GUI/MainFrame.cpp:311
 msgid "Import Config from &project"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:288
+#: src/slic3r/GUI/MainFrame.cpp:311
 msgid "Load configuration from project file"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:291
+#: src/slic3r/GUI/MainFrame.cpp:314
 msgid "Import Config &Bundle"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:291
+#: src/slic3r/GUI/MainFrame.cpp:314
 msgid "Load presets from a bundle"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:293
+#: src/slic3r/GUI/MainFrame.cpp:316
 msgid "&Import"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:296
+#: src/slic3r/GUI/MainFrame.cpp:319
 msgid "Export &G-code"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:296
+#: src/slic3r/GUI/MainFrame.cpp:319
 msgid "Export current plate as G-code"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:299
+#: src/slic3r/GUI/MainFrame.cpp:322
 msgid "Export plate as &STL"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:299
+#: src/slic3r/GUI/MainFrame.cpp:322
 msgid "Export current plate as STL"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:301
+#: src/slic3r/GUI/MainFrame.cpp:324
 msgid "Export plate as &AMF"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:301
+#: src/slic3r/GUI/MainFrame.cpp:324
 msgid "Export current plate as AMF"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:304
+#: src/slic3r/GUI/MainFrame.cpp:327
 msgid "Export &Config"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:304
+#: src/slic3r/GUI/MainFrame.cpp:327
 msgid "Export current configuration to file"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:306
+#: src/slic3r/GUI/MainFrame.cpp:329
 msgid "Export Config &Bundle"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:306
+#: src/slic3r/GUI/MainFrame.cpp:329
 msgid "Export all presets to file"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:308
+#: src/slic3r/GUI/MainFrame.cpp:331
 msgid "&Export"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:314
+#: src/slic3r/GUI/MainFrame.cpp:337
 msgid "Quick Slice"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:314
+#: src/slic3r/GUI/MainFrame.cpp:337
 msgid "Slice a file into a G-code"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:320
+#: src/slic3r/GUI/MainFrame.cpp:343
 msgid "Quick Slice and Save As"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:320
+#: src/slic3r/GUI/MainFrame.cpp:343
 msgid "Slice a file into a G-code, save as"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:326
+#: src/slic3r/GUI/MainFrame.cpp:349
 msgid "Repeat Last Quick Slice"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:334
+#: src/slic3r/GUI/MainFrame.cpp:357
 msgid "(Re)Slice &Now"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:334
+#: src/slic3r/GUI/MainFrame.cpp:357
 msgid "Start new slicing process"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:337
+#: src/slic3r/GUI/MainFrame.cpp:360
 msgid "&Repair STL file"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:337
+#: src/slic3r/GUI/MainFrame.cpp:360
 msgid "Automatically repair an STL file"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:340
+#: src/slic3r/GUI/MainFrame.cpp:363
 msgid "&Quit"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:340
-msgid "Quit Slic3r"
+#: src/slic3r/GUI/MainFrame.cpp:363
+#, possible-c-format
+msgid "Quit %s"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:374
+#: src/slic3r/GUI/MainFrame.cpp:397
 msgid "&Select all"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:374
+#: src/slic3r/GUI/MainFrame.cpp:397
 msgid "Selects all objects"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:377
+#: src/slic3r/GUI/MainFrame.cpp:400
 msgid "&Delete selected"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:377
+#: src/slic3r/GUI/MainFrame.cpp:400
 msgid "Deletes the current selection"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:379
+#: src/slic3r/GUI/MainFrame.cpp:402
 msgid "Delete &all"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:379
+#: src/slic3r/GUI/MainFrame.cpp:402
 msgid "Deletes all objects"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:384
+#: src/slic3r/GUI/MainFrame.cpp:407
 msgid "&Copy"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:384
+#: src/slic3r/GUI/MainFrame.cpp:407
 msgid "Copy selection to clipboard"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:386
+#: src/slic3r/GUI/MainFrame.cpp:409
 msgid "&Paste"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:386
+#: src/slic3r/GUI/MainFrame.cpp:409
 msgid "Paste clipboard"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:401
+#: src/slic3r/GUI/MainFrame.cpp:424
 msgid "&Plater Tab"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:401
+#: src/slic3r/GUI/MainFrame.cpp:424
 msgid "Show the plater"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:408
+#: src/slic3r/GUI/MainFrame.cpp:431
 msgid "P&rint Settings Tab"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:408
+#: src/slic3r/GUI/MainFrame.cpp:431
 msgid "Show the print settings"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:410
+#: src/slic3r/GUI/MainFrame.cpp:433
 msgid "&Filament Settings Tab"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:410
+#: src/slic3r/GUI/MainFrame.cpp:433
 msgid "Show the filament settings"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:412
+#: src/slic3r/GUI/MainFrame.cpp:435
 msgid "Print&er Settings Tab"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:412
+#: src/slic3r/GUI/MainFrame.cpp:435
 msgid "Show the printer settings"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:416
+#: src/slic3r/GUI/MainFrame.cpp:439
 msgid "3&D"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:416
+#: src/slic3r/GUI/MainFrame.cpp:439
 msgid "Show the 3D editing view"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:418
+#: src/slic3r/GUI/MainFrame.cpp:441
 msgid "Pre&view"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:418
+#: src/slic3r/GUI/MainFrame.cpp:441
 msgid "Show the 3D slices preview"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:439
+#: src/slic3r/GUI/MainFrame.cpp:462
 msgid "Print &Host Upload Queue"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:439
+#: src/slic3r/GUI/MainFrame.cpp:462
 msgid "Display the Print Host Upload Queue window"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:448
+#: src/slic3r/GUI/MainFrame.cpp:471
 msgid "Iso"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:448
+#: src/slic3r/GUI/MainFrame.cpp:471
 msgid "Iso View"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:450 src/libslic3r/PrintConfig.cpp:2041
+#: src/slic3r/GUI/MainFrame.cpp:473
 msgid "Top"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:450
+#: src/libslic3r/PrintConfig.cpp:2041
+msgctxt "Layers"
+msgid "Top"
+msgstr ""
+
+#: src/slic3r/GUI/MainFrame.cpp:473
 msgid "Top View"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:451 src/libslic3r/PrintConfig.cpp:148
+#: src/slic3r/GUI/MainFrame.cpp:474
 msgid "Bottom"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:451
+#: src/libslic3r/PrintConfig.cpp:148
+msgid "Bottom"
+msgctxt "Layers"
+msgstr ""
+
+#: src/slic3r/GUI/MainFrame.cpp:474
 msgid "Bottom View"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:452
+#: src/slic3r/GUI/MainFrame.cpp:475
 msgid "Front"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:452
+#: src/slic3r/GUI/MainFrame.cpp:475
 msgid "Front View"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:453 src/libslic3r/PrintConfig.cpp:1561
+#: src/slic3r/GUI/MainFrame.cpp:476 src/libslic3r/PrintConfig.cpp:1561
 msgid "Rear"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:453
+#: src/slic3r/GUI/MainFrame.cpp:476
 msgid "Rear View"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:454
+#: src/slic3r/GUI/MainFrame.cpp:477
 msgid "Left"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:454
+#: src/slic3r/GUI/MainFrame.cpp:477
 msgid "Left View"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:455
+#: src/slic3r/GUI/MainFrame.cpp:478
 msgid "Right"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:455
+#: src/slic3r/GUI/MainFrame.cpp:478
 msgid "Right View"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:469
+#: src/slic3r/GUI/MainFrame.cpp:492
 msgid "Prusa 3D &Drivers"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:469
+#: src/slic3r/GUI/MainFrame.cpp:492
 msgid "Open the Prusa3D drivers download page in your browser"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:471
+#: src/slic3r/GUI/MainFrame.cpp:494
 msgid "Prusa Edition &Releases"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:471
+#: src/slic3r/GUI/MainFrame.cpp:494
 msgid "Open the Prusa Edition releases page in your browser"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:477
-msgid "Slic3r &Website"
+#: src/slic3r/GUI/MainFrame.cpp:500
+#, possible-c-format
+msgid "%s &Website"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:477
-msgid "Open the Slic3r website in your browser"
+#: src/slic3r/GUI/MainFrame.cpp:501
+#, possible-c-format
+msgid "Open the %s website in your browser"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:479
-msgid "Slic3r &Manual"
+#: src/slic3r/GUI/MainFrame.cpp:503
+#, possible-c-format
+msgid "%s &Manual"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:479
-msgid "Open the Slic3r manual in your browser"
+#: src/slic3r/GUI/MainFrame.cpp:504
+#, possible-c-format
+msgid "Open the %s manual in your browser"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:482
+#: src/slic3r/GUI/MainFrame.cpp:507
 msgid "System &Info"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:482
+#: src/slic3r/GUI/MainFrame.cpp:507
 msgid "Show system information"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:484
+#: src/slic3r/GUI/MainFrame.cpp:509
 msgid "Show &Configuration Folder"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:484
+#: src/slic3r/GUI/MainFrame.cpp:509
 msgid "Show user configuration folder (datadir)"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:486
+#: src/slic3r/GUI/MainFrame.cpp:511
 msgid "Report an I&ssue"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:486
+#: src/slic3r/GUI/MainFrame.cpp:511
 #, possible-c-format
 msgid "Report an issue on %s"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:488
+#: src/slic3r/GUI/MainFrame.cpp:513
 #, possible-c-format
 msgid "&About %s"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:488
+#: src/slic3r/GUI/MainFrame.cpp:513
 msgid "Show about dialog"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:491
+#: src/slic3r/GUI/MainFrame.cpp:516
 msgid "Show the list of the keyboard shortcuts"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:499
+#: src/slic3r/GUI/MainFrame.cpp:524
 msgid "&File"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:500
+#: src/slic3r/GUI/MainFrame.cpp:525
 msgid "&Edit"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:501
+#: src/slic3r/GUI/MainFrame.cpp:526
 msgid "&Window"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:502
+#: src/slic3r/GUI/MainFrame.cpp:527
 msgid "&View"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:505
+#: src/slic3r/GUI/MainFrame.cpp:530
 msgid "&Help"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:533
+#: src/slic3r/GUI/MainFrame.cpp:558
 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:547
+#: src/slic3r/GUI/MainFrame.cpp:572
 msgid "No previously sliced file."
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:548 src/slic3r/GUI/PrintHostDialogs.cpp:219
+#: src/slic3r/GUI/MainFrame.cpp:573 src/slic3r/GUI/PrintHostDialogs.cpp:230
 msgid "Error"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:553
+#: src/slic3r/GUI/MainFrame.cpp:578
 msgid "Previously sliced file ("
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:553
+#: src/slic3r/GUI/MainFrame.cpp:578
 msgid ") not found."
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:554
+#: src/slic3r/GUI/MainFrame.cpp:579
 msgid "File Not Found"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:589 src/slic3r/GUI/Tab.cpp:3153
+#: src/slic3r/GUI/MainFrame.cpp:614 src/slic3r/GUI/Tab.cpp:3239
 msgid "Save "
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:589
+#: src/slic3r/GUI/MainFrame.cpp:614
 msgid "SVG"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:589
+#: src/slic3r/GUI/MainFrame.cpp:614
 msgid "G-code"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:589
+#: src/slic3r/GUI/MainFrame.cpp:614
 msgid " file as:"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:604
+#: src/slic3r/GUI/MainFrame.cpp:629
 msgid "Save zip file as:"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:616 src/slic3r/GUI/Plater.cpp:2368
-#: src/slic3r/GUI/Plater.cpp:3498 src/slic3r/GUI/Tab.cpp:1110
-#: src/slic3r/GUI/Tab.cpp:3350
+#: src/slic3r/GUI/MainFrame.cpp:641 src/slic3r/GUI/Plater.cpp:2412
+#: src/slic3r/GUI/Plater.cpp:3542 src/slic3r/GUI/Tab.cpp:1159
+#: src/slic3r/GUI/Tab.cpp:3436
 msgid "Slicing"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:616
+#: src/slic3r/GUI/MainFrame.cpp:641
 msgid "Processing "
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:639
+#: src/slic3r/GUI/MainFrame.cpp:664
 msgid " was successfully sliced."
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:641
+#: src/slic3r/GUI/MainFrame.cpp:666
 msgid "Slicing Done!"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:656
+#: src/slic3r/GUI/MainFrame.cpp:681
 msgid "Select the STL file to repair:"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:669
+#: src/slic3r/GUI/MainFrame.cpp:694
 msgid "Save OBJ file (less prone to coordinate errors than STL) as:"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:684
+#: src/slic3r/GUI/MainFrame.cpp:709
 msgid "Your file was repaired."
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:684 src/libslic3r/PrintConfig.cpp:3056
+#: src/slic3r/GUI/MainFrame.cpp:709 src/libslic3r/PrintConfig.cpp:3056
 msgid "Repair"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:698
+#: src/slic3r/GUI/MainFrame.cpp:723
 msgid "Save configuration as:"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:718 src/slic3r/GUI/MainFrame.cpp:782
+#: src/slic3r/GUI/MainFrame.cpp:743 src/slic3r/GUI/MainFrame.cpp:807
 msgid "Select configuration to load:"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:755
+#: src/slic3r/GUI/MainFrame.cpp:780
 msgid "Save presets bundle as:"
 msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:806
+#: src/slic3r/GUI/MainFrame.cpp:831
 #, possible-c-format
 msgid "%d presets successfully imported."
 msgstr ""
 
-#: src/slic3r/GUI/MsgDialog.cpp:71
-msgid "Slic3r error"
+#: src/slic3r/GUI/MsgDialog.cpp:73
+#, possible-c-format
+msgid "%s error"
 msgstr ""
 
-#: src/slic3r/GUI/MsgDialog.cpp:71
-msgid "Slic3r has encountered an error"
-msgstr ""
-
-#: src/slic3r/GUI/Plater.cpp:137
-msgid "Volume"
+#: src/slic3r/GUI/MsgDialog.cpp:74
+#, possible-c-format
+msgid "%s has encountered an error"
 msgstr ""
 
 #: src/slic3r/GUI/Plater.cpp:138
-msgid "Facets"
+msgid "Volume"
 msgstr ""
 
 #: src/slic3r/GUI/Plater.cpp:139
+msgid "Facets"
+msgstr ""
+
+#: src/slic3r/GUI/Plater.cpp:140
 msgid "Materials"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:142
+#: src/slic3r/GUI/Plater.cpp:143
 msgid "Manifold"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:187
+#: src/slic3r/GUI/Plater.cpp:193
 msgid "Sliced Info"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:206 src/slic3r/GUI/Plater.cpp:998
+#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:1042
 msgid "Used Filament (m)"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:207
+#: src/slic3r/GUI/Plater.cpp:213
 msgid "Used Filament (mm³)"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:208
+#: src/slic3r/GUI/Plater.cpp:214
 msgid "Used Filament (g)"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:209
+#: src/slic3r/GUI/Plater.cpp:215
 msgid "Used Material (unit)"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:210 src/slic3r/GUI/Plater.cpp:1013
+#: src/slic3r/GUI/Plater.cpp:216 src/slic3r/GUI/Plater.cpp:1057
 #: src/libslic3r/PrintConfig.cpp:716
 msgid "Cost"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:211 src/slic3r/GUI/Plater.cpp:985
-#: src/slic3r/GUI/Plater.cpp:1027
+#: src/slic3r/GUI/Plater.cpp:217 src/slic3r/GUI/Plater.cpp:1029
+#: src/slic3r/GUI/Plater.cpp:1071
 msgid "Estimated printing time"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:212
+#: src/slic3r/GUI/Plater.cpp:218
 msgid "Number of tool changes"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:289
+#: src/slic3r/GUI/Plater.cpp:292
 msgid "Click to edit preset"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:412
+#: src/slic3r/GUI/Plater.cpp:421
 msgid "Select what kind of support do you need"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:414 src/libslic3r/PrintConfig.cpp:1814
+#: src/slic3r/GUI/Plater.cpp:423 src/libslic3r/PrintConfig.cpp:1814
 #: src/libslic3r/PrintConfig.cpp:2421
 msgid "Support on build plate only"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:415
+#: src/slic3r/GUI/Plater.cpp:424
 msgid "Everywhere"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:437 src/slic3r/GUI/Tab.cpp:1007
+#: src/slic3r/GUI/Plater.cpp:446 src/slic3r/GUI/Tab.cpp:1056
 msgid "Brim"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:439
+#: src/slic3r/GUI/Plater.cpp:448
 msgid ""
 "This flag enables the brim that will be printed around each object on the "
 "first layer."
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:447
+#: src/slic3r/GUI/Plater.cpp:456
 msgid "Purging volumes"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:672
+#: src/slic3r/GUI/Plater.cpp:681
 msgid "Print settings"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:673 src/slic3r/GUI/Tab.cpp:1421
-#: src/slic3r/GUI/Tab.cpp:1422
+#: src/slic3r/GUI/Plater.cpp:682 src/slic3r/GUI/Tab.cpp:1470
+#: src/slic3r/GUI/Tab.cpp:1471
 msgid "Filament"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:674 src/slic3r/GUI/Preset.cpp:1254
+#: src/slic3r/GUI/Plater.cpp:683 src/slic3r/GUI/Preset.cpp:1276
 msgid "SLA print"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:675 src/slic3r/GUI/Preset.cpp:1255
+#: src/slic3r/GUI/Plater.cpp:684 src/slic3r/GUI/Preset.cpp:1277
 msgid "SLA material"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:676
+#: src/slic3r/GUI/Plater.cpp:685
 msgid "Printer"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:706 src/slic3r/GUI/Plater.cpp:3705
+#: src/slic3r/GUI/Plater.cpp:731 src/slic3r/GUI/Plater.cpp:3749
 msgid "Send to printer"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:726 src/slic3r/GUI/Plater.cpp:2368
-#: src/slic3r/GUI/Plater.cpp:3501
+#: src/slic3r/GUI/Plater.cpp:734 src/slic3r/GUI/Plater.cpp:2412
+#: src/slic3r/GUI/Plater.cpp:3545
 msgid "Slice now"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:860
+#: src/slic3r/GUI/Plater.cpp:873
 msgid "Hold Shift to Slice & Export G-code"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:931
+#: src/slic3r/GUI/Plater.cpp:975
 #, possible-c-format
 msgid "%d (%d shells)"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:936
+#: src/slic3r/GUI/Plater.cpp:980
 #, possible-c-format
 msgid "Auto-repaired (%d errors)"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:939
+#: src/slic3r/GUI/Plater.cpp:983
 #, possible-c-format
 msgid ""
 "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d "
 "facets reversed, %d backwards edges"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:949
+#: src/slic3r/GUI/Plater.cpp:993
 msgid "Yes"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:972
+#: src/slic3r/GUI/Plater.cpp:1016
 msgid "Used Material (ml)"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:975
+#: src/slic3r/GUI/Plater.cpp:1019
 msgid "object(s)"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:975
+#: src/slic3r/GUI/Plater.cpp:1019
 msgid "supports and pad"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015
+#: src/slic3r/GUI/Plater.cpp:1044 src/slic3r/GUI/Plater.cpp:1059
 msgid "objects"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015
+#: src/slic3r/GUI/Plater.cpp:1044 src/slic3r/GUI/Plater.cpp:1059
 msgid "wipe tower"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1030
+#: src/slic3r/GUI/Plater.cpp:1074
 msgid "normal mode"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1034
+#: src/slic3r/GUI/Plater.cpp:1078
 msgid "silent mode"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1546
+#: src/slic3r/GUI/Plater.cpp:1590
 msgid "Loading"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1556
+#: src/slic3r/GUI/Plater.cpp:1600
 #, possible-c-format
 msgid "Processing input file %s\n"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1614
+#: src/slic3r/GUI/Plater.cpp:1658
 msgid ""
 "This file contains several objects positioned at multiple heights. Instead "
 "of considering them as multiple objects, should I consider\n"
 "this file as a single object having multiple parts?\n"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1617 src/slic3r/GUI/Plater.cpp:1725
+#: src/slic3r/GUI/Plater.cpp:1661 src/slic3r/GUI/Plater.cpp:1769
 msgid "Multi-part object detected"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1668
+#: src/slic3r/GUI/Plater.cpp:1712
 msgid ""
 "This file cannot be loaded in a simple mode. Do you want to switch to an "
 "advanced mode?\n"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1669
+#: src/slic3r/GUI/Plater.cpp:1713
 msgid "Detected advanced data"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1702
+#: src/slic3r/GUI/Plater.cpp:1746
 #, possible-c-format
 msgid ""
 "You can't to add the object(s) from %s because of one or some of them "
 "is(are) multi-part"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1722
+#: src/slic3r/GUI/Plater.cpp:1766
 msgid ""
 "Multiple objects were loaded for a multi-material printer.\n"
 "Instead of considering them as multiple objects, should I consider\n"
 "these files to represent a single object having multiple parts?\n"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1738
+#: src/slic3r/GUI/Plater.cpp:1782
 msgid "Loaded"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1830
+#: src/slic3r/GUI/Plater.cpp:1874
 msgid ""
 "Your object appears to be too large, so it was automatically scaled down to "
 "fit your print bed."
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1831
+#: src/slic3r/GUI/Plater.cpp:1875
 msgid "Object too large?"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1881
+#: src/slic3r/GUI/Plater.cpp:1925
 msgid "Export STL file:"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1888
+#: src/slic3r/GUI/Plater.cpp:1932
 msgid "Export AMF file:"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1894
+#: src/slic3r/GUI/Plater.cpp:1938
 msgid "Save file as:"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2059
+#: src/slic3r/GUI/Plater.cpp:2103
 msgid "Arranging canceled"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2062
+#: src/slic3r/GUI/Plater.cpp:2106
 msgid "Arranging"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2096
+#: src/slic3r/GUI/Plater.cpp:2140
 msgid "Could not arrange model objects! Some geometries may be invalid."
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2100
+#: src/slic3r/GUI/Plater.cpp:2144
 msgid "Arranging done."
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2141
+#: src/slic3r/GUI/Plater.cpp:2185
 msgid "Orientation search canceled"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2146
+#: src/slic3r/GUI/Plater.cpp:2190
 msgid "Searching for optimal orientation"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2207
+#: src/slic3r/GUI/Plater.cpp:2251
 msgid "Orientation found."
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2227
+#: src/slic3r/GUI/Plater.cpp:2271
 msgid ""
 "The selected object can't be split because it contains more than one volume/"
 "material."
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2353
+#: src/slic3r/GUI/Plater.cpp:2397
 msgid "Invalid data"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2362
+#: src/slic3r/GUI/Plater.cpp:2406
 msgid "Ready to slice"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/PrintHostDialogs.cpp:220
+#: src/slic3r/GUI/Plater.cpp:2444 src/slic3r/GUI/PrintHostDialogs.cpp:231
 msgid "Cancelling"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2417
+#: src/slic3r/GUI/Plater.cpp:2461
 msgid "Another export job is currently running."
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2678
+#: src/slic3r/GUI/Plater.cpp:2722
 msgid "Export failed"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2683 src/slic3r/GUI/PrintHostDialogs.cpp:221
+#: src/slic3r/GUI/Plater.cpp:2727 src/slic3r/GUI/PrintHostDialogs.cpp:232
 msgid "Cancelled"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2769 src/slic3r/GUI/Plater.cpp:2781
-#: src/slic3r/GUI/Plater.cpp:2853
+#: src/slic3r/GUI/Plater.cpp:2813 src/slic3r/GUI/Plater.cpp:2825
+#: src/slic3r/GUI/Plater.cpp:2897
 msgid "Increase copies"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2847 src/slic3r/GUI/Plater.cpp:2865
+#: src/slic3r/GUI/Plater.cpp:2891 src/slic3r/GUI/Plater.cpp:2909
 msgid "Remove the selected object"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2853
+#: src/slic3r/GUI/Plater.cpp:2897
 msgid "Place one more copy of the selected object"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2855
+#: src/slic3r/GUI/Plater.cpp:2899
 msgid "Decrease copies"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2855
+#: src/slic3r/GUI/Plater.cpp:2899
 msgid "Remove one copy of the selected object"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2857
+#: src/slic3r/GUI/Plater.cpp:2901
 msgid "Set number of copies"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2857
+#: src/slic3r/GUI/Plater.cpp:2901
 msgid "Change the number of copies of the selected object"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2880
+#: src/slic3r/GUI/Plater.cpp:2924
 msgid "Reload from Disk"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2880
+#: src/slic3r/GUI/Plater.cpp:2924
 msgid "Reload the selected file from Disk"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2883
+#: src/slic3r/GUI/Plater.cpp:2927
 msgid "Export the selected object as STL file"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2895
+#: src/slic3r/GUI/Plater.cpp:2939
 msgid "Along X axis"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2895
+#: src/slic3r/GUI/Plater.cpp:2939
 msgid "Mirror the selected object along the X axis"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2897
+#: src/slic3r/GUI/Plater.cpp:2941
 msgid "Along Y axis"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2897
+#: src/slic3r/GUI/Plater.cpp:2941
 msgid "Mirror the selected object along the Y axis"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2899
+#: src/slic3r/GUI/Plater.cpp:2943
 msgid "Along Z axis"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2899
+#: src/slic3r/GUI/Plater.cpp:2943
 msgid "Mirror the selected object along the Z axis"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2902
+#: src/slic3r/GUI/Plater.cpp:2946
 msgid "Mirror"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2902
+#: src/slic3r/GUI/Plater.cpp:2946
 msgid "Mirror the selected object"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2920
+#: src/slic3r/GUI/Plater.cpp:2964
 msgid "To objects"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2920 src/slic3r/GUI/Plater.cpp:2942
+#: src/slic3r/GUI/Plater.cpp:2964 src/slic3r/GUI/Plater.cpp:2986
 msgid "Split the selected object into individual objects"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2922
+#: src/slic3r/GUI/Plater.cpp:2966
 msgid "To parts"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2922 src/slic3r/GUI/Plater.cpp:2962
+#: src/slic3r/GUI/Plater.cpp:2966 src/slic3r/GUI/Plater.cpp:3006
 msgid "Split the selected object into individual sub-parts"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2925 src/slic3r/GUI/Plater.cpp:2942
-#: src/slic3r/GUI/Plater.cpp:2962 src/libslic3r/PrintConfig.cpp:3080
+#: src/slic3r/GUI/Plater.cpp:2969 src/slic3r/GUI/Plater.cpp:2986
+#: src/slic3r/GUI/Plater.cpp:3006 src/libslic3r/PrintConfig.cpp:3080
 msgid "Split"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2925
+#: src/slic3r/GUI/Plater.cpp:2969
 msgid "Split the selected object"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2948
+#: src/slic3r/GUI/Plater.cpp:2992
 msgid "Optimize orientation"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2948
+#: src/slic3r/GUI/Plater.cpp:2992
 msgid "Optimize the rotation of the object for better print results."
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:3373
+#: src/slic3r/GUI/Plater.cpp:3417
 msgid "Save G-code file as:"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:3373
+#: src/slic3r/GUI/Plater.cpp:3417
 msgid "Save SL1 file as:"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:3428
+#: src/slic3r/GUI/Plater.cpp:3472
 #, possible-c-format
 msgid "STL file exported to %s"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:3444
+#: src/slic3r/GUI/Plater.cpp:3488
 #, possible-c-format
 msgid "AMF file exported to %s"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:3447
+#: src/slic3r/GUI/Plater.cpp:3491
 #, possible-c-format
 msgid "Error exporting AMF file %s"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:3473
+#: src/slic3r/GUI/Plater.cpp:3517
 #, possible-c-format
 msgid "3MF file exported to %s"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:3476
+#: src/slic3r/GUI/Plater.cpp:3520
 #, possible-c-format
 msgid "Error exporting 3MF file %s"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:3704
+#: src/slic3r/GUI/Plater.cpp:3748
 msgid "Export"
 msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:3705
+#: src/slic3r/GUI/Plater.cpp:3749
 msgid "Send G-code"
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1762
-#: src/slic3r/GUI/Tab.cpp:1963
+#: src/slic3r/GUI/Preferences.cpp:19 src/slic3r/GUI/Tab.cpp:1812
+#: src/slic3r/GUI/Tab.cpp:2013
 msgid "General"
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:34
+#: src/slic3r/GUI/Preferences.cpp:36
 msgid "Remember output directory"
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:36
+#: src/slic3r/GUI/Preferences.cpp:38
 msgid ""
 "If this is enabled, Slic3r will prompt the last output directory instead of "
 "the one containing the input files."
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:42
+#: src/slic3r/GUI/Preferences.cpp:44
 msgid "Auto-center parts"
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:44
+#: src/slic3r/GUI/Preferences.cpp:46
 msgid ""
 "If this is enabled, Slic3r will auto-center objects around the print bed "
 "center."
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:50
+#: src/slic3r/GUI/Preferences.cpp:52
 msgid "Background processing"
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:52
+#: src/slic3r/GUI/Preferences.cpp:54
 msgid ""
 "If this is enabled, Slic3r will pre-process objects as soon as they're "
 "loaded in order to save time when exporting G-code."
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:61
+#: src/slic3r/GUI/Preferences.cpp:63
 msgid "If enabled, Slic3r checks for new versions of "
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:74
-msgid "Suppress \" - default - \" presets"
+#: src/slic3r/GUI/Preferences.cpp:71
+msgid ""
+"If enabled, Slic3r downloads updates of built-in system presets in the "
+"background. These updates are downloaded into a separate temporary location. "
+"When a new preset version becomes available it is offered at application "
+"startup."
 msgstr ""
 
 #: src/slic3r/GUI/Preferences.cpp:76
+msgid "Suppress \" - default - \" presets"
+msgstr ""
+
+#: src/slic3r/GUI/Preferences.cpp:78
 msgid ""
 "Suppress \" - default - \" presets in the Print / Filament / Printer "
 "selections once there are any other valid presets available."
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:82
+#: src/slic3r/GUI/Preferences.cpp:84
 msgid "Show incompatible print and filament presets"
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:84
+#: src/slic3r/GUI/Preferences.cpp:86
 msgid ""
 "When checked, the print and filament presets are shown in the preset editor "
 "even if they are marked as incompatible with the active printer"
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:91
+#: src/slic3r/GUI/Preferences.cpp:93
 msgid "Use legacy OpenGL 1.1 rendering"
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:93
+#: src/slic3r/GUI/Preferences.cpp:95
 msgid ""
 "If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may "
 "try to check this checkbox. This will disable the layer height editing and "
 "anti aliasing, so it is likely better to upgrade your graphics driver."
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:101
+#: src/slic3r/GUI/Preferences.cpp:103
 msgid "Use Retina resolution for the 3D scene"
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:103
+#: src/slic3r/GUI/Preferences.cpp:105
 msgid ""
 "If enabled, the 3D scene will be rendered in Retina resolution. If you are "
 "experiencing 3D performance problems, disabling this option may help."
 msgstr ""
 
-#: src/slic3r/GUI/Preferences.cpp:126
-msgid "You need to restart Slic3r to make the changes effective."
+#: src/slic3r/GUI/Preferences.cpp:130
+#, possible-c-format
+msgid "You need to restart %s to make the changes effective."
 msgstr ""
 
 #: src/slic3r/GUI/Preset.cpp:207
 msgid "modified"
 msgstr ""
 
-#: src/slic3r/GUI/Preset.cpp:920 src/slic3r/GUI/Preset.cpp:960
-#: src/slic3r/GUI/Preset.cpp:1013 src/slic3r/GUI/Preset.cpp:1045
-#: src/slic3r/GUI/PresetBundle.cpp:1470 src/slic3r/GUI/PresetBundle.cpp:1523
+#: src/slic3r/GUI/Preset.cpp:930 src/slic3r/GUI/Preset.cpp:970
+#: src/slic3r/GUI/Preset.cpp:1035 src/slic3r/GUI/Preset.cpp:1067
+#: src/slic3r/GUI/PresetBundle.cpp:1478 src/slic3r/GUI/PresetBundle.cpp:1543
 msgid "System presets"
 msgstr ""
 
-#: src/slic3r/GUI/Preset.cpp:964 src/slic3r/GUI/Preset.cpp:1049
-#: src/slic3r/GUI/PresetBundle.cpp:1528
+#: src/slic3r/GUI/Preset.cpp:974 src/slic3r/GUI/Preset.cpp:1071
+#: src/slic3r/GUI/PresetBundle.cpp:1548
 msgid "User presets"
 msgstr ""
 
-#: src/slic3r/GUI/Preset.cpp:993 src/slic3r/GUI/Tab.cpp:247
+#: src/slic3r/GUI/Preset.cpp:1003 src/slic3r/GUI/Tab.cpp:237
 msgid "Add a new printer"
 msgstr ""
 
-#: src/slic3r/GUI/Preset.cpp:1253
+#: src/slic3r/GUI/Preset.cpp:1275
 msgid "filament"
 msgstr ""
 
@@ -2929,44 +2988,44 @@ msgstr ""
 msgid "%d lines: %.2lf mm"
 msgstr ""
 
-#: src/slic3r/GUI/PrintHostDialogs.cpp:32
+#: src/slic3r/GUI/PrintHostDialogs.cpp:33
 msgid "Send G-Code to printer host"
 msgstr ""
 
-#: src/slic3r/GUI/PrintHostDialogs.cpp:32
+#: src/slic3r/GUI/PrintHostDialogs.cpp:33
 msgid "Upload to Printer Host with the following filename:"
 msgstr ""
 
-#: src/slic3r/GUI/PrintHostDialogs.cpp:34
+#: src/slic3r/GUI/PrintHostDialogs.cpp:35
 msgid "Start printing after upload"
 msgstr ""
 
-#: src/slic3r/GUI/PrintHostDialogs.cpp:41
+#: src/slic3r/GUI/PrintHostDialogs.cpp:42
 msgid "Use forward slashes ( / ) as a directory separator if needed."
 msgstr ""
 
-#: src/slic3r/GUI/PrintHostDialogs.cpp:157
+#: src/slic3r/GUI/PrintHostDialogs.cpp:156
 msgid "Cancel selected"
 msgstr ""
 
-#: src/slic3r/GUI/PrintHostDialogs.cpp:159
+#: src/slic3r/GUI/PrintHostDialogs.cpp:158
 msgid "Show error message"
 msgstr ""
 
-#: src/slic3r/GUI/PrintHostDialogs.cpp:198
-#: src/slic3r/GUI/PrintHostDialogs.cpp:217
+#: src/slic3r/GUI/PrintHostDialogs.cpp:197
+#: src/slic3r/GUI/PrintHostDialogs.cpp:228
 msgid "Enqueued"
 msgstr ""
 
-#: src/slic3r/GUI/PrintHostDialogs.cpp:218
+#: src/slic3r/GUI/PrintHostDialogs.cpp:229
 msgid "Uploading"
 msgstr ""
 
-#: src/slic3r/GUI/PrintHostDialogs.cpp:222
+#: src/slic3r/GUI/PrintHostDialogs.cpp:233
 msgid "Completed"
 msgstr ""
 
-#: src/slic3r/GUI/PrintHostDialogs.cpp:260
+#: src/slic3r/GUI/PrintHostDialogs.cpp:271
 msgid "Error uploading to print host:"
 msgstr ""
 
@@ -3010,195 +3069,195 @@ msgstr ""
 msgid "Select the print profiles this profile is compatible with."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:132
+#: src/slic3r/GUI/Tab.cpp:130
 msgid "Save current "
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:133
+#: src/slic3r/GUI/Tab.cpp:131
 msgid "Delete this preset"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:145
+#: src/slic3r/GUI/Tab.cpp:136
 msgid ""
 "Hover the cursor over buttons to find more information \n"
 "or click this button."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:858
+#: src/slic3r/GUI/Tab.cpp:907
 msgid "It's a default preset."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:859
+#: src/slic3r/GUI/Tab.cpp:908
 msgid "It's a system preset."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:860
+#: src/slic3r/GUI/Tab.cpp:909
 msgid "Current preset is inherited from "
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:865
+#: src/slic3r/GUI/Tab.cpp:914
 msgid "It can't be deleted or modified. "
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:866
+#: src/slic3r/GUI/Tab.cpp:915
 msgid ""
 "Any modifications should be saved as a new preset inherited from this one. "
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:867
+#: src/slic3r/GUI/Tab.cpp:916
 msgid "To do that please specify a new name for the preset."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:871
+#: src/slic3r/GUI/Tab.cpp:920
 msgid "Additional information:"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:877
+#: src/slic3r/GUI/Tab.cpp:926
 msgid "printer model"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:885
+#: src/slic3r/GUI/Tab.cpp:934
 msgid "default print profile"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:888
+#: src/slic3r/GUI/Tab.cpp:937
 msgid "default filament profile"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:902
+#: src/slic3r/GUI/Tab.cpp:951
 msgid "default SLA material profile"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:906
+#: src/slic3r/GUI/Tab.cpp:955
 msgid "default SLA print profile"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:3305
+#: src/slic3r/GUI/Tab.cpp:997 src/slic3r/GUI/Tab.cpp:3391
 msgid "Layers and perimeters"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:949 src/libslic3r/PrintConfig.cpp:55
+#: src/slic3r/GUI/Tab.cpp:998 src/libslic3r/PrintConfig.cpp:55
 msgid "Layer height"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:953
+#: src/slic3r/GUI/Tab.cpp:1002
 msgid "Vertical shells"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:964
+#: src/slic3r/GUI/Tab.cpp:1013
 msgid "Horizontal shells"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:965 src/libslic3r/PrintConfig.cpp:1709
+#: src/slic3r/GUI/Tab.cpp:1014 src/libslic3r/PrintConfig.cpp:1709
 msgid "Solid layers"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:970
+#: src/slic3r/GUI/Tab.cpp:1019
 msgid "Quality (slower slicing)"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:988
+#: src/slic3r/GUI/Tab.cpp:1037
 msgid "Reducing printing time"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1000
+#: src/slic3r/GUI/Tab.cpp:1049
 msgid "Skirt and brim"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1017
+#: src/slic3r/GUI/Tab.cpp:1066
 msgid "Raft"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1021
+#: src/slic3r/GUI/Tab.cpp:1070
 msgid "Options for support material and raft"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1036
+#: src/slic3r/GUI/Tab.cpp:1085
 msgid "Speed for print moves"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1048
+#: src/slic3r/GUI/Tab.cpp:1097
 msgid "Speed for non-print moves"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1051
+#: src/slic3r/GUI/Tab.cpp:1100
 msgid "Modifiers"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1054
+#: src/slic3r/GUI/Tab.cpp:1103
 msgid "Acceleration control (advanced)"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1061
+#: src/slic3r/GUI/Tab.cpp:1110
 msgid "Autospeed (advanced)"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1069
+#: src/slic3r/GUI/Tab.cpp:1118
 msgid "Multiple Extruders"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1077
+#: src/slic3r/GUI/Tab.cpp:1126
 msgid "Ooze prevention"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1094
+#: src/slic3r/GUI/Tab.cpp:1143
 msgid "Extrusion width"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1104
+#: src/slic3r/GUI/Tab.cpp:1153
 msgid "Overlap"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1107
+#: src/slic3r/GUI/Tab.cpp:1156
 msgid "Flow"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1116
+#: src/slic3r/GUI/Tab.cpp:1165
 msgid "Other"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1119 src/slic3r/GUI/Tab.cpp:3353
+#: src/slic3r/GUI/Tab.cpp:1168 src/slic3r/GUI/Tab.cpp:3439
 msgid "Output options"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1120
+#: src/slic3r/GUI/Tab.cpp:1169
 msgid "Sequential printing"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1122
+#: src/slic3r/GUI/Tab.cpp:1171
 msgid "Extruder clearance (mm)"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1131 src/slic3r/GUI/Tab.cpp:3354
+#: src/slic3r/GUI/Tab.cpp:1180 src/slic3r/GUI/Tab.cpp:3440
 msgid "Output file"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1138 src/libslic3r/PrintConfig.cpp:1382
+#: src/slic3r/GUI/Tab.cpp:1187 src/libslic3r/PrintConfig.cpp:1382
 msgid "Post-processing scripts"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1144 src/slic3r/GUI/Tab.cpp:1145
-#: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1528
-#: src/slic3r/GUI/Tab.cpp:1935 src/slic3r/GUI/Tab.cpp:1936
-#: src/slic3r/GUI/Tab.cpp:2028 src/slic3r/GUI/Tab.cpp:2029
-#: src/slic3r/GUI/Tab.cpp:3242 src/slic3r/GUI/Tab.cpp:3243
+#: src/slic3r/GUI/Tab.cpp:1193 src/slic3r/GUI/Tab.cpp:1194
+#: src/slic3r/GUI/Tab.cpp:1576 src/slic3r/GUI/Tab.cpp:1577
+#: src/slic3r/GUI/Tab.cpp:1985 src/slic3r/GUI/Tab.cpp:1986
+#: src/slic3r/GUI/Tab.cpp:2079 src/slic3r/GUI/Tab.cpp:2080
+#: src/slic3r/GUI/Tab.cpp:3328 src/slic3r/GUI/Tab.cpp:3329
 msgid "Notes"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1151 src/slic3r/GUI/Tab.cpp:1535
-#: src/slic3r/GUI/Tab.cpp:1942 src/slic3r/GUI/Tab.cpp:2035
-#: src/slic3r/GUI/Tab.cpp:3250 src/slic3r/GUI/Tab.cpp:3359
+#: src/slic3r/GUI/Tab.cpp:1200 src/slic3r/GUI/Tab.cpp:1584
+#: src/slic3r/GUI/Tab.cpp:1992 src/slic3r/GUI/Tab.cpp:2086
+#: src/slic3r/GUI/Tab.cpp:3336 src/slic3r/GUI/Tab.cpp:3445
 msgid "Dependencies"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1152 src/slic3r/GUI/Tab.cpp:1536
-#: src/slic3r/GUI/Tab.cpp:1943 src/slic3r/GUI/Tab.cpp:2036
-#: src/slic3r/GUI/Tab.cpp:3251 src/slic3r/GUI/Tab.cpp:3360
+#: src/slic3r/GUI/Tab.cpp:1201 src/slic3r/GUI/Tab.cpp:1585
+#: src/slic3r/GUI/Tab.cpp:1993 src/slic3r/GUI/Tab.cpp:2087
+#: src/slic3r/GUI/Tab.cpp:3337 src/slic3r/GUI/Tab.cpp:3446
 msgid "Profile dependencies"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1198
-#, possible-c-format
+#: src/slic3r/GUI/Tab.cpp:1247
+#, no-c-format
 msgid ""
 "The Spiral Vase mode requires:\n"
 "- one perimeter\n"
@@ -3210,11 +3269,11 @@ msgid ""
 "Shall I adjust those settings in order to enable Spiral Vase?"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1205
+#: src/slic3r/GUI/Tab.cpp:1254
 msgid "Spiral Vase"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1228
+#: src/slic3r/GUI/Tab.cpp:1277
 msgid ""
 "The Wipe Tower currently supports the non-soluble supports only\n"
 "if they are printed with the current extruder without triggering a tool "
@@ -3225,11 +3284,11 @@ msgid ""
 "Shall I adjust those settings in order to enable the Wipe Tower?"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1232 src/slic3r/GUI/Tab.cpp:1249
+#: src/slic3r/GUI/Tab.cpp:1281 src/slic3r/GUI/Tab.cpp:1298
 msgid "Wipe Tower"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1246
+#: src/slic3r/GUI/Tab.cpp:1295
 msgid ""
 "For the Wipe Tower to work with the soluble supports, the support layers\n"
 "need to be synchronized with the object layers.\n"
@@ -3237,7 +3296,7 @@ msgid ""
 "Shall I synchronize support layers in order to enable the Wipe Tower?"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1264
+#: src/slic3r/GUI/Tab.cpp:1313
 msgid ""
 "Supports work better, if the following feature is enabled:\n"
 "- Detect bridging perimeters\n"
@@ -3245,194 +3304,195 @@ msgid ""
 "Shall I adjust those settings for supports?"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1267
+#: src/slic3r/GUI/Tab.cpp:1316
 msgid "Support Generator"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1309
+#: src/slic3r/GUI/Tab.cpp:1358
 msgid "The "
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1309
-#, possible-c-format
+#: src/slic3r/GUI/Tab.cpp:1358
+#, no-c-format
 msgid ""
 " infill pattern is not supposed to work at 100% density.\n"
 "\n"
 "Shall I switch to rectilinear fill pattern?"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1429
+#: src/slic3r/GUI/Tab.cpp:1478
 msgid "Temperature "
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1435
+#: src/slic3r/GUI/Tab.cpp:1484
 msgid "Bed"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1440
+#: src/slic3r/GUI/Tab.cpp:1489
 msgid "Cooling"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1441 src/libslic3r/PrintConfig.cpp:1285
+#: src/slic3r/GUI/Tab.cpp:1490 src/libslic3r/PrintConfig.cpp:1285
 #: src/libslic3r/PrintConfig.cpp:2097
 msgid "Enable"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1452
+#: src/slic3r/GUI/Tab.cpp:1501
 msgid "Fan settings"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1453
+#: src/slic3r/GUI/Tab.cpp:1502
 msgid "Fan speed"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1461
+#: src/slic3r/GUI/Tab.cpp:1510
 msgid "Cooling thresholds"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1467
+#: src/slic3r/GUI/Tab.cpp:1516
 msgid "Filament properties"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1471
+#: src/slic3r/GUI/Tab.cpp:1520
 msgid "Print speed override"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1481
+#: src/slic3r/GUI/Tab.cpp:1530
 msgid "Toolchange parameters with single extruder MM printers"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1496
+#: src/slic3r/GUI/Tab.cpp:1545
 msgid "Ramming settings"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1514 src/slic3r/GUI/Tab.cpp:1898
+#: src/slic3r/GUI/Tab.cpp:1563 src/slic3r/GUI/Tab.cpp:1948
 msgid "Custom G-code"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1515 src/slic3r/GUI/Tab.cpp:1899
+#: src/slic3r/GUI/Tab.cpp:1564 src/slic3r/GUI/Tab.cpp:1949
 #: src/libslic3r/PrintConfig.cpp:1735 src/libslic3r/PrintConfig.cpp:1750
 msgid "Start G-code"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1521 src/slic3r/GUI/Tab.cpp:1905
+#: src/slic3r/GUI/Tab.cpp:1570 src/slic3r/GUI/Tab.cpp:1955
 #: src/libslic3r/PrintConfig.cpp:358 src/libslic3r/PrintConfig.cpp:368
 msgid "End G-code"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1632 src/slic3r/GUI/Tab.cpp:1689
+#: src/slic3r/GUI/Tab.cpp:1681 src/slic3r/GUI/Tab.cpp:1737
 msgid " Browse "
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1651 src/slic3r/GUI/Tab.cpp:1838
+#: src/slic3r/GUI/Tab.cpp:1700 src/slic3r/GUI/Tab.cpp:1888
 msgid "Test"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1662
+#: src/slic3r/GUI/Tab.cpp:1710
 msgid "Could not get a valid Printer Host reference"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1668 src/slic3r/GUI/Tab.cpp:1851
+#: src/slic3r/GUI/Tab.cpp:1716 src/slic3r/GUI/Tab.cpp:1901
 msgid "Success!"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1683
+#: src/slic3r/GUI/Tab.cpp:1731
 msgid ""
 "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-"
 "signed certificate."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1696
+#: src/slic3r/GUI/Tab.cpp:1744
 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1697
+#: src/slic3r/GUI/Tab.cpp:1745
 msgid "Open CA certificate file"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1725
+#: src/slic3r/GUI/Tab.cpp:1773
+#, possible-c-format
 msgid ""
 "HTTPS CA File:\n"
-"\tOn this system, Slic3r uses HTTPS certificates from the system Certificate "
+"    \tOn this system, %s uses HTTPS certificates from the system Certificate "
 "Store or Keychain.\n"
-"\tTo use a custom CA file, please import your CA file into Certificate "
+"    \tTo use a custom CA file, please import your CA file into Certificate "
 "Store / Keychain."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1763 src/slic3r/GUI/Tab.cpp:1964
+#: src/slic3r/GUI/Tab.cpp:1813 src/slic3r/GUI/Tab.cpp:2014
 msgid "Size and coordinates"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1767 src/slic3r/GUI/Tab.cpp:1968
-#: src/slic3r/GUI/Tab.cpp:2912
+#: src/slic3r/GUI/Tab.cpp:1818 src/slic3r/GUI/Tab.cpp:2019
+#: src/slic3r/GUI/Tab.cpp:2988
 msgid " Set "
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1790
+#: src/slic3r/GUI/Tab.cpp:1840
 msgid "Capabilities"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1795
+#: src/slic3r/GUI/Tab.cpp:1845
 msgid "Number of extruders of the printer."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1823
+#: src/slic3r/GUI/Tab.cpp:1873
 msgid "USB/Serial connection"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1824 src/libslic3r/PrintConfig.cpp:1590
+#: src/slic3r/GUI/Tab.cpp:1874 src/libslic3r/PrintConfig.cpp:1590
 msgid "Serial port"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1829
+#: src/slic3r/GUI/Tab.cpp:1879
 msgid "Rescan serial ports"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1851
+#: src/slic3r/GUI/Tab.cpp:1901
 msgid "Connection to printer works correctly."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1854
+#: src/slic3r/GUI/Tab.cpp:1904
 msgid "Connection failed."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1867 src/slic3r/GUI/Tab.cpp:2023
+#: src/slic3r/GUI/Tab.cpp:1917 src/slic3r/GUI/Tab.cpp:2074
 msgid "Print Host upload"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1911 src/libslic3r/PrintConfig.cpp:128
+#: src/slic3r/GUI/Tab.cpp:1961 src/libslic3r/PrintConfig.cpp:128
 msgid "Before layer change G-code"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1917 src/libslic3r/PrintConfig.cpp:1030
+#: src/slic3r/GUI/Tab.cpp:1967 src/libslic3r/PrintConfig.cpp:1030
 msgid "After layer change G-code"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1923 src/libslic3r/PrintConfig.cpp:2005
+#: src/slic3r/GUI/Tab.cpp:1973 src/libslic3r/PrintConfig.cpp:2005
 msgid "Tool change G-code"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1929
+#: src/slic3r/GUI/Tab.cpp:1979
 msgid "Between objects G-code (for sequential printing)"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:1990
+#: src/slic3r/GUI/Tab.cpp:2041
 msgid "Display"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2001
+#: src/slic3r/GUI/Tab.cpp:2052
 msgid "Tilt"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2002
+#: src/slic3r/GUI/Tab.cpp:2053
 msgid "Tilt time"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2008 src/slic3r/GUI/Tab.cpp:3224
+#: src/slic3r/GUI/Tab.cpp:2059 src/slic3r/GUI/Tab.cpp:3310
 msgid "Corrections"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2075 src/slic3r/GUI/Tab.cpp:2137
+#: src/slic3r/GUI/Tab.cpp:2136 src/slic3r/GUI/Tab.cpp:2209
 #: src/libslic3r/PrintConfig.cpp:1076 src/libslic3r/PrintConfig.cpp:1086
 #: src/libslic3r/PrintConfig.cpp:1096 src/libslic3r/PrintConfig.cpp:1109
 #: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1131
@@ -3440,173 +3500,173 @@ msgstr ""
 msgid "Machine limits"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2089
+#: src/slic3r/GUI/Tab.cpp:2150
 msgid "Values in this column are for Full Power mode"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2090
+#: src/slic3r/GUI/Tab.cpp:2151
 msgid "Full Power"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2095
+#: src/slic3r/GUI/Tab.cpp:2156
 msgid "Values in this column are for Silent mode"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2096
+#: src/slic3r/GUI/Tab.cpp:2157
 msgid "Silent"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2104
+#: src/slic3r/GUI/Tab.cpp:2165
 msgid "Maximum feedrates"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2109
+#: src/slic3r/GUI/Tab.cpp:2170
 msgid "Maximum accelerations"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2116
+#: src/slic3r/GUI/Tab.cpp:2177
 msgid "Jerk limits"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2121
+#: src/slic3r/GUI/Tab.cpp:2182
 msgid "Minimum feedrates"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2159 src/slic3r/GUI/Tab.cpp:2167
+#: src/slic3r/GUI/Tab.cpp:2231 src/slic3r/GUI/Tab.cpp:2239
 msgid "Single extruder MM setup"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2168
+#: src/slic3r/GUI/Tab.cpp:2240
 msgid "Single extruder multimaterial parameters"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/GCode/PreviewData.cpp:475
+#: src/slic3r/GUI/Tab.cpp:2253 src/libslic3r/GCode/PreviewData.cpp:475
 #, possible-c-format
 msgid "Extruder %d"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2189
+#: src/slic3r/GUI/Tab.cpp:2260
 msgid "Layer height limits"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2194
+#: src/slic3r/GUI/Tab.cpp:2265
 msgid "Position (for multi-extruder printers)"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2197
+#: src/slic3r/GUI/Tab.cpp:2268
 msgid "Retraction"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2200
+#: src/slic3r/GUI/Tab.cpp:2271
 msgid "Only lift Z"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2213
+#: src/slic3r/GUI/Tab.cpp:2284
 msgid ""
 "Retraction when tool is disabled (advanced settings for multi-extruder "
 "setups)"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2217
+#: src/slic3r/GUI/Tab.cpp:2288
 msgid "Preview"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2353
+#: src/slic3r/GUI/Tab.cpp:2429
 msgid ""
 "The Wipe option is not available when using the Firmware Retraction mode.\n"
 "\n"
 "Shall I disable it in order to enable Firmware Retraction?"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2355
+#: src/slic3r/GUI/Tab.cpp:2431
 msgid "Firmware Retraction"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2682
+#: src/slic3r/GUI/Tab.cpp:2757
 #, possible-c-format
 msgid "Default preset (%s)"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2683
+#: src/slic3r/GUI/Tab.cpp:2758
 #, possible-c-format
 msgid "Preset (%s)"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2700
+#: src/slic3r/GUI/Tab.cpp:2775
 msgid "has the following unsaved changes:"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2703
+#: src/slic3r/GUI/Tab.cpp:2778
 msgid "is not compatible with printer"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2704
+#: src/slic3r/GUI/Tab.cpp:2779
 msgid "is not compatible with print profile"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2706
+#: src/slic3r/GUI/Tab.cpp:2781
 msgid "and it has the following unsaved changes:"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2709
+#: src/slic3r/GUI/Tab.cpp:2784
 msgid "Discard changes and continue anyway?"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2710
+#: src/slic3r/GUI/Tab.cpp:2785
 msgid "Unsaved Changes"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2722
+#: src/slic3r/GUI/Tab.cpp:2797
 msgid "Please check your object list before preset changing."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2802
+#: src/slic3r/GUI/Tab.cpp:2878
 msgid "Copy"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2824
+#: src/slic3r/GUI/Tab.cpp:2900
 msgid "The supplied name is empty. It can't be saved."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2829
+#: src/slic3r/GUI/Tab.cpp:2905
 msgid "Cannot overwrite a system profile."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2833
+#: src/slic3r/GUI/Tab.cpp:2909
 msgid "Cannot overwrite an external profile."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2859
+#: src/slic3r/GUI/Tab.cpp:2935
 msgid "remove"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2859
+#: src/slic3r/GUI/Tab.cpp:2935
 msgid "delete"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2860
+#: src/slic3r/GUI/Tab.cpp:2936
 msgid "Are you sure you want to "
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2860
+#: src/slic3r/GUI/Tab.cpp:2936
 msgid " the selected preset?"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2861
+#: src/slic3r/GUI/Tab.cpp:2937
 msgid "Remove"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2862
+#: src/slic3r/GUI/Tab.cpp:2938
 msgid " Preset"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2990
+#: src/slic3r/GUI/Tab.cpp:3064
 msgid ""
 "LOCKED LOCK;indicates that the settings are the same as the system values "
 "for the current option group"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2993
+#: src/slic3r/GUI/Tab.cpp:3067
 msgid ""
 "UNLOCKED LOCK;indicates that some settings were changed and are not equal to "
 "the system values for the current option group.\n"
@@ -3614,13 +3674,13 @@ msgid ""
 "to the system values."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2999
+#: src/slic3r/GUI/Tab.cpp:3073
 msgid ""
 "WHITE BULLET;for the left button: \tindicates a non-system preset,\n"
 "for the right button: \tindicates that the settings hasn't been modified."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3003
+#: src/slic3r/GUI/Tab.cpp:3077
 msgid ""
 "BACK ARROW;indicates that the settings were changed and are not equal to the "
 "last saved preset for the current option group.\n"
@@ -3628,30 +3688,30 @@ msgid ""
 "to the last saved preset."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3029
+#: src/slic3r/GUI/Tab.cpp:3103
 msgid ""
 "LOCKED LOCK icon indicates that the settings are the same as the system "
 "values for the current option group"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3031
+#: src/slic3r/GUI/Tab.cpp:3105
 msgid ""
 "UNLOCKED LOCK icon indicates that some settings were changed and are not "
 "equal to the system values for the current option group.\n"
 "Click to reset all settings for current option group to the system values."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3034
+#: src/slic3r/GUI/Tab.cpp:3108
 msgid "WHITE BULLET icon indicates a non system preset."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3037
+#: src/slic3r/GUI/Tab.cpp:3111
 msgid ""
 "WHITE BULLET icon indicates that the settings are the same as in the last "
 "saved preset for the current option group."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3039
+#: src/slic3r/GUI/Tab.cpp:3113
 msgid ""
 "BACK ARROW icon indicates that the settings were changed and are not equal "
 "to the last saved preset for the current option group.\n"
@@ -3659,104 +3719,104 @@ msgid ""
 "preset."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3045
+#: src/slic3r/GUI/Tab.cpp:3119
 msgid ""
 "LOCKED LOCK icon indicates that the value is the same as the system value."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3046
+#: src/slic3r/GUI/Tab.cpp:3120
 msgid ""
 "UNLOCKED LOCK icon indicates that the value was changed and is not equal to "
 "the system value.\n"
 "Click to reset current value to the system value."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3052
+#: src/slic3r/GUI/Tab.cpp:3126
 msgid ""
 "WHITE BULLET icon indicates that the value is the same as in the last saved "
 "preset."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3053
+#: src/slic3r/GUI/Tab.cpp:3127
 msgid ""
 "BACK ARROW icon indicates that the value was changed and is not equal to the "
 "last saved preset.\n"
 "Click to reset current value to the last saved preset."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3153
+#: src/slic3r/GUI/Tab.cpp:3239
 msgid " as:"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3197
+#: src/slic3r/GUI/Tab.cpp:3283
 msgid "the following postfix are not allowed:"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3201
+#: src/slic3r/GUI/Tab.cpp:3287
 msgid "The supplied name is not available."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3214
+#: src/slic3r/GUI/Tab.cpp:3300
 msgid "Material"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3216 src/slic3r/GUI/Tab.cpp:3307
+#: src/slic3r/GUI/Tab.cpp:3302 src/slic3r/GUI/Tab.cpp:3393
 msgid "Layers"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3220
+#: src/slic3r/GUI/Tab.cpp:3306
 msgid "Exposure"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3315
+#: src/slic3r/GUI/Tab.cpp:3401
 msgid "Support head"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3320
+#: src/slic3r/GUI/Tab.cpp:3406
 msgid "Support pillar"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3330
+#: src/slic3r/GUI/Tab.cpp:3416
 msgid "Connection of the support sticks and junctions"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3335
+#: src/slic3r/GUI/Tab.cpp:3421
 msgid "Automatic generation"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3397
+#: src/slic3r/GUI/Tab.cpp:3483
 msgid "Head penetration should not be greater than the head width."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3398
+#: src/slic3r/GUI/Tab.cpp:3484
 msgid "Invalid Head penetration"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3410
+#: src/slic3r/GUI/Tab.cpp:3496
 msgid "Pinhead diameter should be smaller than the pillar diameter."
 msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3411
+#: src/slic3r/GUI/Tab.cpp:3497
 msgid "Invalid pinhead diameter"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.hpp:307 src/slic3r/GUI/Tab.hpp:395
+#: src/slic3r/GUI/Tab.hpp:317 src/slic3r/GUI/Tab.hpp:405
 msgid "Print Settings"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.hpp:325
+#: src/slic3r/GUI/Tab.hpp:335
 msgid "Filament Settings"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.hpp:358
+#: src/slic3r/GUI/Tab.hpp:368
 msgid "Printer Settings"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.hpp:381
+#: src/slic3r/GUI/Tab.hpp:391
 msgid "Material Settings"
 msgstr ""
 
-#: src/slic3r/GUI/Tab.hpp:407
+#: src/slic3r/GUI/Tab.hpp:417
 msgid "Save preset"
 msgstr ""
 
@@ -3785,7 +3845,7 @@ msgstr ""
 msgid "Don't notify about new releases any more"
 msgstr ""
 
-#: src/slic3r/GUI/UpdateDialogs.cpp:73 src/slic3r/GUI/UpdateDialogs.cpp:167
+#: src/slic3r/GUI/UpdateDialogs.cpp:73 src/slic3r/GUI/UpdateDialogs.cpp:168
 msgid "Configuration update"
 msgstr ""
 
@@ -3804,14 +3864,16 @@ msgid ""
 msgstr ""
 
 #: src/slic3r/GUI/UpdateDialogs.cpp:112
-msgid "Slic3r incompatibility"
+#, possible-c-format
+msgid "%s incompatibility"
 msgstr ""
 
-#: src/slic3r/GUI/UpdateDialogs.cpp:112
-msgid "Slic3r configuration is incompatible"
+#: src/slic3r/GUI/UpdateDialogs.cpp:113
+#, possible-c-format
+msgid "%s configuration is incompatible"
 msgstr ""
 
-#: src/slic3r/GUI/UpdateDialogs.cpp:117
+#: src/slic3r/GUI/UpdateDialogs.cpp:118
 #, possible-c-format
 msgid ""
 "This version of %s is not compatible with currently installed configuration "
@@ -3819,29 +3881,30 @@ msgid ""
 "This probably happened as a result of running an older %s after using a "
 "newer one.\n"
 "\n"
-"You may either exit Slic3r and try again with a newer version, or you may re-"
-"run the initial configuration. Doing so will create a backup snapshot of the "
-"existing configuration before installing files compatible with this Slic3r.\n"
+"You may either exit %s and try again with a newer version, or you may re-run "
+"the initial configuration. Doing so will create a backup snapshot of the "
+"existing configuration before installing files compatible with this %s.\n"
 msgstr ""
 
-#: src/slic3r/GUI/UpdateDialogs.cpp:126
+#: src/slic3r/GUI/UpdateDialogs.cpp:127
 #, possible-c-format
 msgid "This %s version: %s"
 msgstr ""
 
-#: src/slic3r/GUI/UpdateDialogs.cpp:131
+#: src/slic3r/GUI/UpdateDialogs.cpp:132
 msgid "Incompatible bundles:"
 msgstr ""
 
-#: src/slic3r/GUI/UpdateDialogs.cpp:147
-msgid "Exit Slic3r"
+#: src/slic3r/GUI/UpdateDialogs.cpp:148
+#, possible-c-format
+msgid "Exit %s"
 msgstr ""
 
-#: src/slic3r/GUI/UpdateDialogs.cpp:150
+#: src/slic3r/GUI/UpdateDialogs.cpp:151
 msgid "Re-configure"
 msgstr ""
 
-#: src/slic3r/GUI/UpdateDialogs.cpp:171
+#: src/slic3r/GUI/UpdateDialogs.cpp:172
 #, possible-c-format
 msgid ""
 "%s now uses an updated configuration structure.\n"
@@ -3857,7 +3920,7 @@ msgid ""
 "choose whether to enable automatic preset updates."
 msgstr ""
 
-#: src/slic3r/GUI/UpdateDialogs.cpp:187
+#: src/slic3r/GUI/UpdateDialogs.cpp:188
 msgid "For more information please visit our wiki page:"
 msgstr ""
 
@@ -3950,12 +4013,12 @@ msgstr ""
 msgid "Show advanced settings"
 msgstr ""
 
-#: src/slic3r/GUI/wxExtensions.cpp:2409
+#: src/slic3r/GUI/wxExtensions.cpp:2328
 #, possible-c-format
 msgid "Switch to the %s mode"
 msgstr ""
 
-#: src/slic3r/GUI/wxExtensions.cpp:2410
+#: src/slic3r/GUI/wxExtensions.cpp:2329
 #, possible-c-format
 msgid "Current mode is %s"
 msgstr ""
@@ -4229,87 +4292,87 @@ msgstr ""
 msgid "Error with zip archive"
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1136
+#: src/libslic3r/Print.cpp:1135
 msgid "All objects are outside of the print volume."
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1165
+#: src/libslic3r/Print.cpp:1162
 msgid "Some objects are too close; your extruder will collide with them."
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1180
+#: src/libslic3r/Print.cpp:1177
 msgid ""
 "Some objects are too tall and cannot be printed without extruder collisions."
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1190
+#: src/libslic3r/Print.cpp:1187
 msgid "The Spiral Vase option can only be used when printing a single object."
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1192
+#: src/libslic3r/Print.cpp:1189
 msgid ""
 "The Spiral Vase option can only be used when printing single material "
 "objects."
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1198
+#: src/libslic3r/Print.cpp:1195
 msgid ""
 "All extruders must have the same diameter for single extruder multimaterial "
 "printer."
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1203
+#: src/libslic3r/Print.cpp:1200
 msgid ""
 "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter "
 "and Repetier G-code flavors."
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1205
+#: src/libslic3r/Print.cpp:1202
 msgid ""
 "The Wipe Tower is currently only supported with the relative extruder "
 "addressing (use_relative_e_distances=1)."
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1226
+#: src/libslic3r/Print.cpp:1223
 msgid ""
 "The Wipe Tower is only supported for multiple objects if they have equal "
 "layer heigths"
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1228
+#: src/libslic3r/Print.cpp:1225
 msgid ""
 "The Wipe Tower is only supported for multiple objects if they are printed "
 "over an equal number of raft layers"
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1230
+#: src/libslic3r/Print.cpp:1227
 msgid ""
 "The Wipe Tower is only supported for multiple objects if they are printed "
 "with the same support_material_contact_distance"
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1232
+#: src/libslic3r/Print.cpp:1229
 msgid ""
 "The Wipe Tower is only supported for multiple objects if they are sliced "
 "equally."
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1261
+#: src/libslic3r/Print.cpp:1258
 msgid ""
 "The Wipe tower is only supported if all objects have the same layer height "
 "profile"
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1271
+#: src/libslic3r/Print.cpp:1268
 msgid "The supplied settings will cause an empty print."
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1288
+#: src/libslic3r/Print.cpp:1285
 msgid ""
 "One or more object were assigned an extruder that the printer does not have."
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1298
+#: src/libslic3r/Print.cpp:1294
 msgid ""
 "Printing with multiple extruders of differing nozzle diameters. If support "
 "is to be printed with the current extruder (support_material_extruder == 0 "
@@ -4317,13 +4380,13 @@ msgid ""
 "same diameter."
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1306
+#: src/libslic3r/Print.cpp:1302
 msgid ""
 "For the Wipe Tower to work with the soluble supports, the support layers "
 "need to be synchronized with the object layers."
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1310
+#: src/libslic3r/Print.cpp:1306
 msgid ""
 "The Wipe Tower currently supports the non-soluble supports only if they are "
 "printed with the current extruder without triggering a tool change. (both "
@@ -4331,15 +4394,15 @@ msgid ""
 "set to 0)."
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1317
+#: src/libslic3r/Print.cpp:1313
 msgid "first_layer_height"
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1332
+#: src/libslic3r/Print.cpp:1328
 msgid "First layer height can't be greater than nozzle diameter"
 msgstr ""
 
-#: src/libslic3r/Print.cpp:1336
+#: src/libslic3r/Print.cpp:1332
 msgid "Layer height can't be greater than nozzle diameter"
 msgstr ""
 
@@ -4347,7 +4410,7 @@ msgstr ""
 msgid "Slicing model"
 msgstr ""
 
-#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:804
+#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:810
 msgid "Generating support points"
 msgstr ""
 
@@ -4371,27 +4434,27 @@ msgstr ""
 msgid "Rasterizing layers"
 msgstr ""
 
-#: src/libslic3r/SLAPrint.cpp:606
+#: src/libslic3r/SLAPrint.cpp:612
 msgid ""
 "Cannot proceed without support points! Add support points or disable support "
 "generation."
 msgstr ""
 
-#: src/libslic3r/SLAPrint.cpp:618
+#: src/libslic3r/SLAPrint.cpp:624
 msgid "Elevation is too low for object."
 msgstr ""
 
 #. TRN To be shown at the status bar on SLA slicing error.
-#: src/libslic3r/SLAPrint.cpp:701
+#: src/libslic3r/SLAPrint.cpp:707
 msgid "Slicing had to be stopped due to an internal error."
 msgstr ""
 
-#: src/libslic3r/SLAPrint.cpp:852 src/libslic3r/SLAPrint.cpp:862
-#: src/libslic3r/SLAPrint.cpp:910
+#: src/libslic3r/SLAPrint.cpp:858 src/libslic3r/SLAPrint.cpp:868
+#: src/libslic3r/SLAPrint.cpp:916
 msgid "Visualizing supports"
 msgstr ""
 
-#: src/libslic3r/SLAPrint.cpp:1452
+#: src/libslic3r/SLAPrint.cpp:1458
 msgid "Slicing done"
 msgstr ""
 
@@ -4607,7 +4670,7 @@ msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:216
 msgid ""
-"When printing multi-material objects, this settings will make slic3r to clip "
+"When printing multi-material objects, this settings will make Slic3r to clip "
 "the overlapping object parts one by the other (2nd part will be clipped by "
 "the 1st, 3rd part will be clipped by the 1st and 2nd etc)."
 msgstr ""
@@ -4867,7 +4930,7 @@ msgid "Extra perimeters if needed"
 msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:446
-#, possible-c-format
+#, no-c-format
 msgid ""
 "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r "
 "keeps adding perimeters, until more than 70% of the loop immediately above "
@@ -5515,7 +5578,7 @@ msgid "This setting represents the maximum speed of your fan."
 msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1161
-#, possible-c-format
+#, no-c-format
 msgid ""
 "This is the highest printable layer height for this extruder, used to cap "
 "the variable layer height and support layer height. Maximum recommended "
@@ -6930,7 +6993,7 @@ msgid ""
 msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2929
-msgid "Export SVG"
+msgid "Export OBJ"
 msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2930
diff --git a/resources/localization/fr_FR/Slic3rPE.mo b/resources/localization/fr_FR/Slic3rPE.mo
index ba1966d28..0a2409281 100644
Binary files a/resources/localization/fr_FR/Slic3rPE.mo and b/resources/localization/fr_FR/Slic3rPE.mo differ
diff --git a/resources/localization/fr_FR/Slic3rPE_fr.po b/resources/localization/fr_FR/Slic3rPE_fr.po
index 9e5335586..af9255cf5 100644
--- a/resources/localization/fr_FR/Slic3rPE_fr.po
+++ b/resources/localization/fr_FR/Slic3rPE_fr.po
@@ -1,25 +1,22 @@
-# SOME DESCRIPTIVE TITLE.
-# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
-# This file is distributed under the same license as the PACKAGE package.
-# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
-#
 msgid ""
 msgstr ""
 "Project-Id-Version: \n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-04-09 14:34+0200\n"
-"PO-Revision-Date: 2019-04-09 15:04+0200\n"
-"Language: en\n"
+"POT-Creation-Date: 2019-04-18 10:07+0200\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Oleksandra Iushchenko <yusanka@gmail.com>\n"
+"Language-Team: \n"
+"Language: fr_FR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Last-Translator: Oleksandra Iushchenko <yusanka@gmail.com>\n"
-"Language-Team: \n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
 "X-Generator: Poedit 2.0.8\n"
 
 #: src/slic3r/GUI/AboutDialog.cpp:35
-msgid "About Slic3r"
-msgstr "About Slic3r"
+#, c-format
+msgid "About %s"
+msgstr "A propos de %s"
 
 #: src/slic3r/GUI/AboutDialog.cpp:64 src/slic3r/GUI/MainFrame.cpp:52
 msgid "Version"
@@ -27,40 +24,40 @@ msgstr "Version"
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:43
 msgid "Shape"
-msgstr "Shape"
+msgstr "Forme"
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:51
 msgid "Rectangular"
-msgstr "Rectangular"
+msgstr "Rectangle"
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:55
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:118 src/slic3r/GUI/Plater.cpp:136
-#: src/slic3r/GUI/Tab.cpp:2185
+#: src/slic3r/GUI/Tab.cpp:2186
 msgid "Size"
-msgstr "Size"
+msgstr "Taille"
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:56
 msgid "Size in X and Y of the rectangular plate."
-msgstr "Size in X and Y of the rectangular plate."
+msgstr "Taille en X et Y du plateau rectangulaire."
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:62
 msgid "Origin"
-msgstr "Origin"
+msgstr "Origine"
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:63
 msgid ""
 "Distance of the 0,0 G-code coordinate from the front left corner of the "
 "rectangle."
 msgstr ""
-"Distance of the 0,0 G-code coordinate from the front left corner of the "
+"Distance des coordonnées 0,0 du G-code depuis le coin avant gauche du "
 "rectangle."
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:67
 msgid "Circular"
-msgstr "Circular"
+msgstr "Circulaire"
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:70 src/slic3r/GUI/ConfigWizard.cpp:111
-#: src/slic3r/GUI/ConfigWizard.cpp:544 src/slic3r/GUI/ConfigWizard.cpp:558
+#: src/slic3r/GUI/ConfigWizard.cpp:547 src/slic3r/GUI/ConfigWizard.cpp:561
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115
 #: src/slic3r/GUI/RammingChart.cpp:81 src/slic3r/GUI/WipeTowerDialog.cpp:84
 #: src/libslic3r/PrintConfig.cpp:59 src/libslic3r/PrintConfig.cpp:66
@@ -80,151 +77,154 @@ msgstr "Circular"
 #: src/libslic3r/PrintConfig.cpp:1931 src/libslic3r/PrintConfig.cpp:2123
 #: src/libslic3r/PrintConfig.cpp:2130 src/libslic3r/PrintConfig.cpp:2137
 #: src/libslic3r/PrintConfig.cpp:2167 src/libslic3r/PrintConfig.cpp:2177
-#: src/libslic3r/PrintConfig.cpp:2187 src/libslic3r/PrintConfig.cpp:2293
-#: src/libslic3r/PrintConfig.cpp:2368 src/libslic3r/PrintConfig.cpp:2377
-#: src/libslic3r/PrintConfig.cpp:2386 src/libslic3r/PrintConfig.cpp:2396
-#: src/libslic3r/PrintConfig.cpp:2440 src/libslic3r/PrintConfig.cpp:2450
-#: src/libslic3r/PrintConfig.cpp:2469 src/libslic3r/PrintConfig.cpp:2479
-#: src/libslic3r/PrintConfig.cpp:2488 src/libslic3r/PrintConfig.cpp:2506
-#: src/libslic3r/PrintConfig.cpp:2521 src/libslic3r/PrintConfig.cpp:2532
-#: src/libslic3r/PrintConfig.cpp:2545 src/libslic3r/PrintConfig.cpp:2555
+#: src/libslic3r/PrintConfig.cpp:2187 src/libslic3r/PrintConfig.cpp:2295
+#: src/libslic3r/PrintConfig.cpp:2370 src/libslic3r/PrintConfig.cpp:2379
+#: src/libslic3r/PrintConfig.cpp:2388 src/libslic3r/PrintConfig.cpp:2398
+#: src/libslic3r/PrintConfig.cpp:2442 src/libslic3r/PrintConfig.cpp:2452
+#: src/libslic3r/PrintConfig.cpp:2471 src/libslic3r/PrintConfig.cpp:2481
+#: src/libslic3r/PrintConfig.cpp:2490 src/libslic3r/PrintConfig.cpp:2508
+#: src/libslic3r/PrintConfig.cpp:2523 src/libslic3r/PrintConfig.cpp:2537
+#: src/libslic3r/PrintConfig.cpp:2550 src/libslic3r/PrintConfig.cpp:2560
 msgid "mm"
 msgstr "mm"
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:71 src/libslic3r/PrintConfig.cpp:676
 msgid "Diameter"
-msgstr "Diameter"
+msgstr "Diamètre"
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:72
 msgid ""
 "Diameter of the print bed. It is assumed that origin (0,0) is located in the "
 "center."
 msgstr ""
-"Diameter of the print bed. It is assumed that origin (0,0) is located in the "
-"center."
+"Diamètre du plateau d'impression. Il est supposé que l'origine (0,0) est "
+"située au centre."
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:76 src/slic3r/GUI/GUI_Preview.cpp:239
 #: src/libslic3r/GCode/PreviewData.cpp:175
 msgid "Custom"
-msgstr "Custom"
+msgstr "Personnalisé"
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:80
 msgid "Load shape from STL..."
-msgstr "Load shape from STL..."
+msgstr "Charger une forme depuis un STL..."
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:126
 msgid "Settings"
-msgstr "Settings"
+msgstr "Réglages"
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:299
 msgid "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):"
-msgstr "Choose a file to import bed shape from (STL/OBJ/AMF/3MF/PRUSA):"
+msgstr ""
+"Choisir un fichier à partir duquel importer la forme du plateau (STL/OBJ/"
+"AMF/3MF/PRUSA) :"
 
-#: src/slic3r/GUI/BedShapeDialog.cpp:316 src/slic3r/GUI/GUI_ObjectList.cpp:1252
+#: src/slic3r/GUI/BedShapeDialog.cpp:316 src/slic3r/GUI/GUI_ObjectList.cpp:1320
 msgid "Error! "
-msgstr "Error! "
+msgstr "Erreur ! "
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:325
 msgid "The selected file contains no geometry."
-msgstr "The selected file contains no geometry."
+msgstr "Le fichier sélectionné ne contient aucune géométrie."
 
 #: src/slic3r/GUI/BedShapeDialog.cpp:329
 msgid ""
 "The selected file contains several disjoint areas. This is not supported."
 msgstr ""
-"The selected file contains several disjoint areas. This is not supported."
+"Le fichier sélectionné contient plusieurs zones disjointes. Cela n'est pas "
+"utilisable."
 
-#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:507
+#: src/slic3r/GUI/BedShapeDialog.hpp:44 src/slic3r/GUI/ConfigWizard.cpp:510
 msgid "Bed Shape"
-msgstr "Bed Shape"
+msgstr "Forme du plateau"
 
 #: src/slic3r/GUI/BonjourDialog.cpp:55
 msgid "Network lookup"
-msgstr "Network lookup"
+msgstr "Recherche réseau"
 
 #: src/slic3r/GUI/BonjourDialog.cpp:72
 msgid "Address"
-msgstr "Address"
+msgstr "Adresse"
 
 #: src/slic3r/GUI/BonjourDialog.cpp:73
 msgid "Hostname"
-msgstr "Hostname"
+msgstr "Nom d'hôte"
 
 #: src/slic3r/GUI/BonjourDialog.cpp:74
 msgid "Service name"
-msgstr "Service name"
+msgstr "Nom du service"
 
 #: src/slic3r/GUI/BonjourDialog.cpp:76
 msgid "OctoPrint version"
-msgstr "OctoPrint version"
+msgstr "Version d'OctoPrint"
 
 #: src/slic3r/GUI/BonjourDialog.cpp:218
 msgid "Searching for devices"
-msgstr "Searching for devices"
+msgstr "Recherche des dispositifs"
 
 #: src/slic3r/GUI/BonjourDialog.cpp:225
 msgid "Finished"
-msgstr "Finished"
+msgstr "Terminé"
 
 #: src/slic3r/GUI/ButtonsDescription.cpp:15
 msgid "Buttons And Text Colors Description"
-msgstr "Buttons And Text Colors Description"
+msgstr "Description des Boutons et des Couleurs de Texte"
 
 #: src/slic3r/GUI/ButtonsDescription.cpp:40
 msgid "Value is the same as the system value"
-msgstr "Value is the same as the system value"
+msgstr "La valeur est identique à la valeur du système"
 
 #: src/slic3r/GUI/ButtonsDescription.cpp:57
 msgid ""
 "Value was changed and is not equal to the system value or the last saved "
 "preset"
 msgstr ""
-"Value was changed and is not equal to the system value or the last saved "
-"preset"
+"La valeur a été changée et n'est pas égale à la valeur du système ou au "
+"dernier préréglage sauvegardé"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:17
 msgid "Upgrade"
-msgstr "Upgrade"
+msgstr "Mise à jour"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:19
 msgid "Downgrade"
-msgstr "Downgrade"
+msgstr "Rétrograder"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:21
 msgid "Before roll back"
-msgstr "Before roll back"
+msgstr "Avant le retour en arrière"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:23
 msgid "User"
-msgstr "User"
+msgstr "Utilisateur"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:26
 msgid "Unknown"
-msgstr "Unknown"
+msgstr "Inconnu"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:38
 msgid "Active: "
-msgstr "Active: "
+msgstr "Actif : "
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:44
 msgid "slic3r version"
-msgstr "slic3r version"
+msgstr "version de slic3r"
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 src/slic3r/GUI/Preset.cpp:1250
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:45 src/slic3r/GUI/Preset.cpp:1252
 msgid "print"
-msgstr "print"
+msgstr "imprimer"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:46
 msgid "filaments"
 msgstr "filaments"
 
-#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 src/slic3r/GUI/Preset.cpp:1254
+#: src/slic3r/GUI/ConfigSnapshotDialog.cpp:47 src/slic3r/GUI/Preset.cpp:1256
 msgid "printer"
-msgstr "printer"
+msgstr "imprimer"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51 src/slic3r/GUI/Tab.cpp:872
 msgid "vendor"
-msgstr "vendor"
+msgstr "fabriquant"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:51
 msgid "version"
@@ -232,63 +232,63 @@ msgstr "version"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:52
 msgid "min slic3r version"
-msgstr "min slic3r version"
+msgstr "version minimale de slic3r"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:54
 msgid "max slic3r version"
-msgstr "max slic3r version"
+msgstr "version maximale de slic3r"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57
 msgid "model"
-msgstr "model"
+msgstr "modèle"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:57
 msgid "variants"
-msgstr "variants"
+msgstr "variantes"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:69
 msgid "Incompatible with this Slic3r"
-msgstr "Incompatible with this Slic3r"
+msgstr "Incompatible avec ce Slic3r"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:72
 msgid "Activate"
-msgstr "Activate"
+msgstr "Activer"
 
 #: src/slic3r/GUI/ConfigSnapshotDialog.cpp:98
 msgid "Configuration Snapshots"
-msgstr "Configuration Snapshots"
+msgstr "Instantanés de Configuration"
 
 #: src/slic3r/GUI/ConfigWizard.cpp:111
 msgid "nozzle"
-msgstr "nozzle"
+msgstr "buse"
 
 #: src/slic3r/GUI/ConfigWizard.cpp:115
 msgid "Alternate nozzles:"
-msgstr "Alternate nozzles:"
+msgstr ""
 
 #: src/slic3r/GUI/ConfigWizard.cpp:181
 msgid "All standard"
-msgstr "All standard"
+msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:182 src/slic3r/GUI/Tab.cpp:2909
+#: src/slic3r/GUI/ConfigWizard.cpp:182 src/slic3r/GUI/Tab.cpp:2910
 msgid "All"
-msgstr "All"
+msgstr "Tous"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:183 src/slic3r/GUI/Plater.cpp:414
+#: src/slic3r/GUI/ConfigWizard.cpp:183 src/slic3r/GUI/Plater.cpp:413
 #: src/libslic3r/GCode/PreviewData.cpp:162
 msgid "None"
-msgstr "None"
+msgstr "Aucun"
 
 #: src/slic3r/GUI/ConfigWizard.cpp:284
 #, c-format
-msgid "Welcome to the Slic3r %s"
-msgstr "Welcome to the Slic3r %s"
+msgid "Welcome to the %s %s"
+msgstr ""
 
 #: src/slic3r/GUI/ConfigWizard.cpp:284
 msgid "Welcome"
-msgstr "Welcome"
+msgstr "Bienvenue"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:288 src/slic3r/GUI/GUI_App.cpp:600
+#: src/slic3r/GUI/ConfigWizard.cpp:288 src/slic3r/GUI/GUI_App.cpp:632
 #, c-format
 msgid "Run %s"
 msgstr "Run %s"
@@ -296,306 +296,304 @@ msgstr "Run %s"
 #: src/slic3r/GUI/ConfigWizard.cpp:290
 #, c-format
 msgid ""
-"Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial "
-"configuration; just a few settings and you will be ready to print."
+"Hello, welcome to %s! This %s helps you with the initial configuration; just "
+"a few settings and you will be ready to print."
 msgstr ""
-"Hello, welcome to Slic3r Prusa Edition! This %s helps you with the initial "
-"configuration; just a few settings and you will be ready to print."
 
-#: src/slic3r/GUI/ConfigWizard.cpp:294
+#: src/slic3r/GUI/ConfigWizard.cpp:295
 msgid ""
 "Remove user profiles - install from scratch (a snapshot will be taken "
 "beforehand)"
 msgstr ""
-"Remove user profiles - install from scratch (a snapshot will be taken "
-"beforehand)"
+"Supprimer les profils d'utilisateur - installation à partir de zéro (un "
+"snapshot sera fait avant)"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:325
+#: src/slic3r/GUI/ConfigWizard.cpp:326
 #, c-format
 msgid "%s Family"
-msgstr "%s Family"
+msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:362
+#: src/slic3r/GUI/ConfigWizard.cpp:363
 msgid "Custom Printer Setup"
-msgstr "Custom Printer Setup"
+msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:362
+#: src/slic3r/GUI/ConfigWizard.cpp:363
 msgid "Custom Printer"
-msgstr "Custom Printer"
+msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:364
+#: src/slic3r/GUI/ConfigWizard.cpp:365
 msgid "Define a custom printer profile"
-msgstr "Define a custom printer profile"
+msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:366
+#: src/slic3r/GUI/ConfigWizard.cpp:367
 msgid "Custom profile name:"
-msgstr "Custom profile name:"
+msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:390
+#: src/slic3r/GUI/ConfigWizard.cpp:391
 msgid "Automatic updates"
-msgstr "Automatic updates"
+msgstr "Mises à jour automatiques"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:390
+#: src/slic3r/GUI/ConfigWizard.cpp:391
 msgid "Updates"
-msgstr "Updates"
+msgstr "Mises à jour"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:398 src/slic3r/GUI/Preferences.cpp:59
+#: src/slic3r/GUI/ConfigWizard.cpp:399 src/slic3r/GUI/Preferences.cpp:59
 msgid "Check for application updates"
-msgstr "Check for application updates"
+msgstr "Vérifier les mises à jour de l'application"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:401 src/slic3r/GUI/Preferences.cpp:61
+#: src/slic3r/GUI/ConfigWizard.cpp:402
+#, c-format
 msgid ""
-"If enabled, Slic3r checks for new versions of Slic3r PE online. When a new "
-"version becomes available a notification is displayed at the next "
-"application startup (never during program usage). This is only a "
-"notification mechanisms, no automatic installation is done."
+"If enabled, Slic3r checks for new versions of %s online. When a new version "
+"becomes available, a notification is displayed at the next application "
+"startup (never during program usage). This is only a notification "
+"mechanisms, no automatic installation is done."
 msgstr ""
-"If enabled, Slic3r checks for new versions of Slic3r PE online. When a new "
-"version becomes available a notification is displayed at the next "
-"application startup (never during program usage). This is only a "
-"notification mechanisms, no automatic installation is done."
 
-#: src/slic3r/GUI/ConfigWizard.cpp:405 src/slic3r/GUI/Preferences.cpp:67
+#: src/slic3r/GUI/ConfigWizard.cpp:408 src/slic3r/GUI/Preferences.cpp:67
 msgid "Update built-in Presets automatically"
-msgstr "Update built-in Presets automatically"
+msgstr "Mettre à jour automatiquement les Préréglages intégrés"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:408 src/slic3r/GUI/Preferences.cpp:69
+#: src/slic3r/GUI/ConfigWizard.cpp:411 src/slic3r/GUI/Preferences.cpp:69
 msgid ""
 "If enabled, Slic3r downloads updates of built-in system presets in the "
 "background. These updates are downloaded into a separate temporary location. "
 "When a new preset version becomes available it is offered at application "
 "startup."
 msgstr ""
-"If enabled, Slic3r downloads updates of built-in system presets in the "
-"background. These updates are downloaded into a separate temporary location. "
-"When a new preset version becomes available it is offered at application "
-"startup."
+"Si activé, Slic3r télécharge les mises à jours des préréglages système "
+"intégrés en arrière-plan. Ces mises à jour sont téléchargées dans un "
+"répertoire temporaire séparé. Lorsqu'une nouvelle version de préréglages est "
+"disponible, elle est proposée au démarrage de l'application."
 
-#: src/slic3r/GUI/ConfigWizard.cpp:409
+#: src/slic3r/GUI/ConfigWizard.cpp:412
 msgid ""
 "Updates are never applied without user's consent and never overwrite user's "
 "customized settings."
 msgstr ""
-"Updates are never applied without user's consent and never overwrite user's "
-"customized settings."
+"Les mises à jour ne sont jamais appliquées sans l'accord de l'utilisateur et "
+"n'annulent jamais les réglages personnalisés de l'utilisateur."
 
-#: src/slic3r/GUI/ConfigWizard.cpp:414
+#: src/slic3r/GUI/ConfigWizard.cpp:417
 msgid ""
 "Additionally a backup snapshot of the whole configuration is created before "
 "an update is applied."
 msgstr ""
-"Additionally a backup snapshot of the whole configuration is created before "
-"an update is applied."
+"De plus, un instantané de sauvegarde de l'ensemble de la configuration est "
+"créé avant qu'une mise à jour ne soit appliquée."
 
-#: src/slic3r/GUI/ConfigWizard.cpp:421
+#: src/slic3r/GUI/ConfigWizard.cpp:424
 msgid "Other Vendors"
-msgstr "Other Vendors"
+msgstr "Autres Fabriquants"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:423
-msgid "Pick another vendor supported by Slic3r PE:"
-msgstr "Pick another vendor supported by Slic3r PE:"
+#: src/slic3r/GUI/ConfigWizard.cpp:426
+#, c-format
+msgid "Pick another vendor supported by %s:"
+msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:469
+#: src/slic3r/GUI/ConfigWizard.cpp:472
 msgid "Firmware Type"
-msgstr "Firmware Type"
+msgstr "Type de Firmware"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:469 src/slic3r/GUI/Tab.cpp:1870
+#: src/slic3r/GUI/ConfigWizard.cpp:472 src/slic3r/GUI/Tab.cpp:1870
 msgid "Firmware"
 msgstr "Firmware"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:473
+#: src/slic3r/GUI/ConfigWizard.cpp:476
 msgid "Choose the type of firmware used by your printer."
-msgstr "Choose the type of firmware used by your printer."
-
-#: src/slic3r/GUI/ConfigWizard.cpp:507
-msgid "Bed Shape and Size"
-msgstr "Bed Shape and Size"
+msgstr "Choisissez le type de firmware utilisé par votre imprimante."
 
 #: src/slic3r/GUI/ConfigWizard.cpp:510
+msgid "Bed Shape and Size"
+msgstr "Forme du Plateau et Taille"
+
+#: src/slic3r/GUI/ConfigWizard.cpp:513
 msgid "Set the shape of your printer's bed."
-msgstr "Set the shape of your printer's bed."
+msgstr "Réglez la forme du plateau de votre imprimante."
 
-#: src/slic3r/GUI/ConfigWizard.cpp:524
+#: src/slic3r/GUI/ConfigWizard.cpp:527
 msgid "Filament and Nozzle Diameters"
-msgstr "Filament and Nozzle Diameters"
+msgstr "Diamètres du Filament et de la Buse"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:524
+#: src/slic3r/GUI/ConfigWizard.cpp:527
 msgid "Print Diameters"
-msgstr "Print Diameters"
-
-#: src/slic3r/GUI/ConfigWizard.cpp:540
-msgid "Enter the diameter of your printer's hot end nozzle."
-msgstr "Enter the diameter of your printer's hot end nozzle."
+msgstr "Diamètres d'Impression"
 
 #: src/slic3r/GUI/ConfigWizard.cpp:543
+msgid "Enter the diameter of your printer's hot end nozzle."
+msgstr ""
+"Entrez le diamètre de la buse de la tête d'impression de votre imprimante."
+
+#: src/slic3r/GUI/ConfigWizard.cpp:546
 msgid "Nozzle Diameter:"
-msgstr "Nozzle Diameter:"
+msgstr "Diamètre de la Buse :"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:553
+#: src/slic3r/GUI/ConfigWizard.cpp:556
 msgid "Enter the diameter of your filament."
-msgstr "Enter the diameter of your filament."
+msgstr "Entrez le diamètre de votre filament."
 
-#: src/slic3r/GUI/ConfigWizard.cpp:554
+#: src/slic3r/GUI/ConfigWizard.cpp:557
 msgid ""
 "Good precision is required, so use a caliper and do multiple measurements "
 "along the filament, then compute the average."
 msgstr ""
-"Good precision is required, so use a caliper and do multiple measurements "
-"along the filament, then compute the average."
+"Une bonne précision est requise, utilisez un pied à coulisse et calculez la "
+"moyenne de plusieurs mesures le long du filament."
 
-#: src/slic3r/GUI/ConfigWizard.cpp:557
+#: src/slic3r/GUI/ConfigWizard.cpp:560
 msgid "Filament Diameter:"
-msgstr "Filament Diameter:"
+msgstr "Diamètre du Filament :"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:575
+#: src/slic3r/GUI/ConfigWizard.cpp:578
 msgid "Extruder and Bed Temperatures"
-msgstr "Extruder and Bed Temperatures"
+msgstr "Températures de l'Extrudeur et du Lit"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:575
+#: src/slic3r/GUI/ConfigWizard.cpp:578
 msgid "Temperatures"
-msgstr "Temperatures"
+msgstr "Températures"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:591
+#: src/slic3r/GUI/ConfigWizard.cpp:594
 msgid "Enter the temperature needed for extruding your filament."
-msgstr "Enter the temperature needed for extruding your filament."
-
-#: src/slic3r/GUI/ConfigWizard.cpp:592
-msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS."
-msgstr "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS."
+msgstr "Entrez la température nécessaire pour extruder votre filament."
 
 #: src/slic3r/GUI/ConfigWizard.cpp:595
-msgid "Extrusion Temperature:"
-msgstr "Extrusion Temperature:"
+msgid "A rule of thumb is 160 to 230 °C for PLA, and 215 to 250 °C for ABS."
+msgstr ""
+"La règle générale est 160 à 230 °C pour le PLA et 215 à 250 °C pour l'ABS."
 
-#: src/slic3r/GUI/ConfigWizard.cpp:596 src/slic3r/GUI/ConfigWizard.cpp:610
+#: src/slic3r/GUI/ConfigWizard.cpp:598
+msgid "Extrusion Temperature:"
+msgstr "Température d'Extrusion :"
+
+#: src/slic3r/GUI/ConfigWizard.cpp:599 src/slic3r/GUI/ConfigWizard.cpp:613
 msgid "°C"
 msgstr "°C"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:605
+#: src/slic3r/GUI/ConfigWizard.cpp:608
 msgid ""
 "Enter the bed temperature needed for getting your filament to stick to your "
 "heated bed."
 msgstr ""
-"Enter the bed temperature needed for getting your filament to stick to your "
-"heated bed."
-
-#: src/slic3r/GUI/ConfigWizard.cpp:606
-msgid ""
-"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have "
-"no heated bed."
-msgstr ""
-"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have "
-"no heated bed."
+"Entrez la température du lit nécessaire pour que votre filament colle à "
+"votre lit chauffant."
 
 #: src/slic3r/GUI/ConfigWizard.cpp:609
+msgid ""
+"A rule of thumb is 60 °C for PLA and 110 °C for ABS. Leave zero if you have "
+"no heated bed."
+msgstr ""
+"La règle générale est 60 °C pour le PLA et 110 °C pour l'ABS. Laissez à zéro "
+"si vous n'avez pas de lit chauffant."
+
+#: src/slic3r/GUI/ConfigWizard.cpp:612
 msgid "Bed Temperature:"
-msgstr "Bed Temperature:"
+msgstr "Température du Plateau :"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1001
+#: src/slic3r/GUI/ConfigWizard.cpp:1017
 msgid "Select all standard printers"
-msgstr "Select all standard printers"
+msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1004
+#: src/slic3r/GUI/ConfigWizard.cpp:1020
 msgid "< &Back"
-msgstr "< &Back"
+msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1005
+#: src/slic3r/GUI/ConfigWizard.cpp:1021
 msgid "&Next >"
-msgstr "&Next >"
+msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1006
+#: src/slic3r/GUI/ConfigWizard.cpp:1022
 msgid "&Finish"
-msgstr "&Finish"
+msgstr "&Fin"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1007 src/slic3r/GUI/FirmwareDialog.cpp:142
+#: src/slic3r/GUI/ConfigWizard.cpp:1023 src/slic3r/GUI/FirmwareDialog.cpp:142
 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:37
 #: src/slic3r/GUI/ProgressStatusBar.cpp:28
 msgid "Cancel"
-msgstr "Cancel"
+msgstr "Annuler"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1021
+#: src/slic3r/GUI/ConfigWizard.cpp:1037
 msgid "Prusa FFF Technology Printers"
-msgstr "Prusa FFF Technology Printers"
+msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1024
+#: src/slic3r/GUI/ConfigWizard.cpp:1040
 msgid "Prusa MSLA Technology Printers"
-msgstr "Prusa MSLA Technology Printers"
+msgstr ""
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1111
+#: src/slic3r/GUI/ConfigWizard.cpp:1127
 msgid "Configuration Wizard"
-msgstr "Configuration Wizard"
+msgstr "Assistant de Configuration"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1112
+#: src/slic3r/GUI/ConfigWizard.cpp:1128
 msgid "Configuration &Wizard"
-msgstr "Configuration &Wizard"
+msgstr "&Assistant de Configuration"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1114
+#: src/slic3r/GUI/ConfigWizard.cpp:1130
 msgid "Configuration Assistant"
-msgstr "Configuration Assistant"
+msgstr "Assistant de Configuration"
 
-#: src/slic3r/GUI/ConfigWizard.cpp:1115
+#: src/slic3r/GUI/ConfigWizard.cpp:1131
 msgid "Configuration &Assistant"
-msgstr "Configuration &Assistant"
+msgstr "&Assistant de Configuration"
 
-#: src/slic3r/GUI/Field.cpp:112
+#: src/slic3r/GUI/Field.cpp:111
 msgid "default value"
-msgstr "default value"
+msgstr ""
 
-#: src/slic3r/GUI/Field.cpp:115
+#: src/slic3r/GUI/Field.cpp:114
 msgid "parameter name"
-msgstr "parameter name"
+msgstr ""
 
-#: src/slic3r/GUI/Field.cpp:143
+#: src/slic3r/GUI/Field.cpp:142
 #, c-format
 msgid "%s doesn't support percentage"
-msgstr "%s doesn't support percentage"
+msgstr "%s ne supporte pas un pourcentage"
 
-#: src/slic3r/GUI/Field.cpp:157 src/slic3r/GUI/Field.cpp:180
+#: src/slic3r/GUI/Field.cpp:156 src/slic3r/GUI/Field.cpp:179
 msgid "Invalid numeric input."
-msgstr "Invalid numeric input."
+msgstr ""
 
-#: src/slic3r/GUI/Field.cpp:162
+#: src/slic3r/GUI/Field.cpp:161
 msgid "Input value is out of range"
-msgstr "Input value is out of range"
+msgstr "La valeur entrée est hors plage"
 
-#: src/slic3r/GUI/Field.cpp:188
+#: src/slic3r/GUI/Field.cpp:187
 #, c-format
 msgid ""
 "Do you mean %d%% instead of %d %s?\n"
 "Select YES if you want to change this value to %d%%, \n"
 "or NO if you are sure that %d %s is a correct value."
 msgstr ""
-"Do you mean %d%% instead of %d %s?\n"
-"Select YES if you want to change this value to %d%%, \n"
-"or NO if you are sure that %d %s is a correct value."
 
-#: src/slic3r/GUI/Field.cpp:191
+#: src/slic3r/GUI/Field.cpp:190
 msgid "Parameter validation"
-msgstr "Parameter validation"
+msgstr ""
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:141
 msgid "Flash!"
-msgstr "Flash!"
+msgstr "Flash !"
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:143
 msgid "Flashing in progress. Please do not disconnect the printer!"
-msgstr "Flashing in progress. Please do not disconnect the printer!"
+msgstr ""
+"Processus de flash en cours. Veuillez ne pas déconnecter l'imprimante !"
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:187
 msgid "Flashing failed: "
-msgstr "Flashing failed: "
+msgstr ""
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:268
 msgid "Flashing succeeded!"
-msgstr "Flashing succeeded!"
+msgstr "Flash effectué avec succès !"
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:269
 msgid "Flashing failed. Please see the avrdude log below."
-msgstr "Flashing failed. Please see the avrdude log below."
+msgstr ""
+"Le processus de flash a échoué. Veuillez consulter le journal avrdude ci-"
+"dessous."
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:270
 msgid "Flashing cancelled."
-msgstr "Flashing cancelled."
+msgstr "Processus de flash annulé."
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:308
 #, c-format
@@ -607,19 +605,12 @@ msgid ""
 "Do you want to continue and flash this hex file anyway?\n"
 "Please only continue if you are sure this is the right thing to do."
 msgstr ""
-"This firmware hex file does not match the printer model.\n"
-"The hex file is intended for: %s\n"
-"Printer reported: %s\n"
-"\n"
-"Do you want to continue and flash this hex file anyway?\n"
-"Please only continue if you are sure this is the right thing to do."
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:395 src/slic3r/GUI/FirmwareDialog.cpp:431
 #, c-format
 msgid ""
 "Multiple %s devices found. Please only connect one at a time for flashing."
 msgstr ""
-"Multiple %s devices found. Please only connect one at a time for flashing."
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:412
 #, c-format
@@ -628,73 +619,70 @@ msgid ""
 "If the device is connected, please press the Reset button next to the USB "
 "connector ..."
 msgstr ""
-"The %s device was not found.\n"
-"If the device is connected, please press the Reset button next to the USB "
-"connector ..."
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:525
 #, c-format
 msgid "The %s device could not have been found"
-msgstr "The %s device could not have been found"
+msgstr ""
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:603
 #, c-format
 msgid "Error accessing port at %s: %s"
-msgstr "Error accessing port at %s: %s"
+msgstr ""
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:605
 #, c-format
 msgid "Error: %s"
-msgstr "Error: %s"
+msgstr ""
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:735
 msgid "Firmware flasher"
-msgstr "Firmware flasher"
+msgstr "Outil de flash du firmware"
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:762
 msgid "Firmware image:"
-msgstr "Firmware image:"
+msgstr "Image du firmware :"
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:766
 msgid "Serial port:"
-msgstr "Serial port:"
+msgstr "Port série :"
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:768
 msgid "Autodetected"
-msgstr "Autodetected"
+msgstr ""
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:769
 msgid "Rescan"
-msgstr "Rescan"
+msgstr "Scanner à nouveau"
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:776
 msgid "Progress:"
-msgstr "Progress:"
+msgstr "Progression :"
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:779
 msgid "Status:"
-msgstr "Status:"
+msgstr "État :"
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:780
 msgid "Ready"
-msgstr "Ready"
+msgstr "Prêt"
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:800
 msgid "Advanced: Output log"
-msgstr "Advanced: Output log"
+msgstr ""
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:811
 #: src/slic3r/GUI/PrintHostDialogs.cpp:161
 msgid "Close"
-msgstr "Close"
+msgstr ""
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:859
 msgid ""
 "Are you sure you want to cancel firmware flashing?\n"
 "This could leave your printer in an unusable state!"
 msgstr ""
-"Are you sure you want to cancel firmware flashing?\n"
-"This could leave your printer in an unusable state!"
+"Êtes-vous certain de vouloir annuler le processus de flash du firmware ?\n"
+"Cela pourrait rendre votre imprimante inutilisable !"
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:860
 msgid "Confirmation"
@@ -702,340 +690,357 @@ msgstr "Confirmation"
 
 #: src/slic3r/GUI/FirmwareDialog.cpp:863
 msgid "Cancelling..."
-msgstr "Cancelling..."
+msgstr ""
 
-#: src/slic3r/GUI/GLCanvas3D.cpp:709
+#: src/slic3r/GUI/GLCanvas3D.cpp:714
 msgid "Detected object outside print volume"
-msgstr "Detected object outside print volume"
+msgstr ""
 
-#: src/slic3r/GUI/GLCanvas3D.cpp:710
+#: src/slic3r/GUI/GLCanvas3D.cpp:715
 msgid "Detected toolpath outside print volume"
-msgstr "Detected toolpath outside print volume"
+msgstr ""
 
-#: src/slic3r/GUI/GLCanvas3D.cpp:711
+#: src/slic3r/GUI/GLCanvas3D.cpp:716
 msgid "Some objects are not visible when editing supports"
-msgstr "Some objects are not visible when editing supports"
+msgstr ""
 
-#: src/slic3r/GUI/GLCanvas3D.cpp:713
+#: src/slic3r/GUI/GLCanvas3D.cpp:718
 msgid ""
 "Detected object outside print volume\n"
 "Resolve a clash to continue slicing/export process correctly"
 msgstr ""
-"Detected object outside print volume\n"
-"Resolve a clash to continue slicing/export process correctly"
 
 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:35
 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:195
 msgid "Rotate lower part upwards"
-msgstr "Rotate lower part upwards"
+msgstr ""
 
 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:36
 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:198
 msgid "Perform cut"
-msgstr "Perform cut"
+msgstr ""
 
 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:43
 msgid "Cut object:"
-msgstr "Cut object:"
+msgstr ""
 
 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:88
 msgid "Cut [C]"
-msgstr "Cut [C]"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3006
+#: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:188 src/libslic3r/PrintConfig.cpp:3011
 msgid "Cut"
-msgstr "Cut"
+msgstr "Couper"
 
 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:193
 msgid "Keep upper part"
-msgstr "Keep upper part"
+msgstr ""
 
 #: src/slic3r/GUI/Gizmos/GLGizmoCut.cpp:194
 msgid "Keep lower part"
-msgstr "Keep lower part"
+msgstr ""
 
 #: src/slic3r/GUI/Gizmos/GLGizmoFlatten.cpp:32
 msgid "Place on face [F]"
-msgstr "Place on face [F]"
+msgstr ""
 
 #: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:51
 msgid "Move [M]"
-msgstr "Move [M]"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:176
+#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177
 msgid "Position (mm)"
-msgstr "Position (mm)"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:176
+#: src/slic3r/GUI/Gizmos/GLGizmoMove.cpp:177
 msgid "Displacement (mm)"
-msgstr "Displacement (mm)"
+msgstr ""
 
 #: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:458
 msgid "Rotate [R]"
-msgstr "Rotate [R]"
+msgstr ""
 
 #: src/slic3r/GUI/Gizmos/GLGizmoRotate.cpp:491
 msgid "Rotation (deg)"
-msgstr "Rotation (deg)"
+msgstr ""
 
 #: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:51
 msgid "Scale [S]"
-msgstr "Scale [S]"
+msgstr ""
 
 #: src/slic3r/GUI/Gizmos/GLGizmoScale.cpp:276
 msgid "Scale (%)"
-msgstr "Scale (%)"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:597
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:882
 msgid "Left mouse click - add point"
-msgstr "Left mouse click - add point"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:598
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:883
 msgid "Right mouse click - remove point"
-msgstr "Right mouse click - remove point"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:599
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:884
 msgid "Shift + Left (+ drag) - select point(s)"
-msgstr "Shift + Left (+ drag) - select point(s)"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:606
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:891
 msgid "Head diameter: "
-msgstr "Head diameter: "
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:618
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:903
 msgid "Lock supports under new islands"
-msgstr "Lock supports under new islands"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:622
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:907
 msgid "Remove selected points"
-msgstr "Remove selected points"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:626
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:679
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:911
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:964
 msgid "Remove all points"
-msgstr "Remove all points"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:631
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:916
 msgid "Apply changes"
-msgstr "Apply changes"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:636
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:921
 msgid "Discard changes"
-msgstr "Discard changes"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:644
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:929
 msgid "Minimal points distance: "
-msgstr "Minimal points distance: "
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:655
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:940
 msgid "Support points density: "
-msgstr "Support points density: "
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:669
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:954
 msgid "Auto-generate points [A]"
-msgstr "Auto-generate points [A]"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:675
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:960
 msgid "Manual editing [M]"
-msgstr "Manual editing [M]"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:738
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:969
+msgid "No points  (will be autogenerated)"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:970
+msgid "Autogenerated points (no modifications)"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:971
+msgid "User-modified points"
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:972
+msgid "Generation in progress..."
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:980
+msgid "Reset direction [R] "
+msgstr ""
+
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1039
 msgid "SLA Support Points [L]"
-msgstr "SLA Support Points [L]"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:767
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1066
 msgid "Do you want to save your manually edited support points ?\n"
-msgstr "Do you want to save your manually edited support points ?\n"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:768
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1067
 msgid "Save changes?"
-msgstr "Save changes?"
+msgstr ""
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:897
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1210
 msgid ""
 "Autogeneration will erase all manually edited points.\n"
 "\n"
 "Are you sure you want to do it?\n"
 msgstr ""
-"Autogeneration will erase all manually edited points.\n"
-"\n"
-"Are you sure you want to do it?\n"
 
-#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:899 src/slic3r/GUI/GUI.cpp:288
+#: src/slic3r/GUI/Gizmos/GLGizmoSlaSupports.cpp:1212 src/slic3r/GUI/GUI.cpp:288
 #: src/slic3r/GUI/WipeTowerDialog.cpp:44 src/slic3r/GUI/WipeTowerDialog.cpp:328
 msgid "Warning"
-msgstr "Warning"
+msgstr "Alerte"
 
-#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2720
+#: src/slic3r/GUI/GUI.cpp:147 src/slic3r/GUI/Tab.cpp:2721
 msgid "It's impossible to print multi-part object(s) with SLA technology."
-msgstr "It's impossible to print multi-part object(s) with SLA technology."
+msgstr ""
 
 #: src/slic3r/GUI/GUI.cpp:148
 msgid "Please check and fix your object list."
-msgstr "Please check and fix your object list."
+msgstr ""
 
-#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:679
-#: src/slic3r/GUI/Tab.cpp:2722
+#: src/slic3r/GUI/GUI.cpp:149 src/slic3r/GUI/GUI_App.cpp:711
+#: src/slic3r/GUI/Tab.cpp:2723
 msgid "Attention!"
-msgstr "Attention!"
+msgstr "Attention !"
 
 #: src/slic3r/GUI/GUI.cpp:282
 msgid "Notice"
-msgstr "Notice"
+msgstr "Remarque"
 
-#: src/slic3r/GUI/GUI_App.cpp:318
+#: src/slic3r/GUI/GUI_App.cpp:352
 msgid "Changing of an application language"
-msgstr "Changing of an application language"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:326 src/slic3r/GUI/GUI_App.cpp:335
+#: src/slic3r/GUI/GUI_App.cpp:360 src/slic3r/GUI/GUI_App.cpp:369
 msgid "Recreating"
-msgstr "Recreating"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:339
-msgid "Loading of a current presets"
-msgstr "Loading of a current presets"
+#: src/slic3r/GUI/GUI_App.cpp:373
+msgid "Loading of current presets"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:347
+#: src/slic3r/GUI/GUI_App.cpp:381
 msgid "Loading of a mode view"
-msgstr "Loading of a mode view"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:429
+#: src/slic3r/GUI/GUI_App.cpp:463
 msgid "Choose one file (3MF):"
-msgstr "Choose one file (3MF):"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:441
+#: src/slic3r/GUI/GUI_App.cpp:475
 msgid "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):"
-msgstr "Choose one or more files (STL/OBJ/AMF/3MF/PRUSA):"
+msgstr "Choisir un ou plusieurs fichiers (STL/OBJ/AMF/3MF/PRUSA) :"
 
-#: src/slic3r/GUI/GUI_App.cpp:454
+#: src/slic3r/GUI/GUI_App.cpp:488
 msgid "Array of language names and identifiers should have the same size."
-msgstr "Array of language names and identifiers should have the same size."
+msgstr ""
+"Les tableaux de noms et d'identifiants de langue doivent avoir la même "
+"taille."
 
-#: src/slic3r/GUI/GUI_App.cpp:464
+#: src/slic3r/GUI/GUI_App.cpp:498
 msgid "Select the language"
-msgstr "Select the language"
+msgstr "Sélectionner la langue"
 
-#: src/slic3r/GUI/GUI_App.cpp:464
+#: src/slic3r/GUI/GUI_App.cpp:498
 msgid "Language"
-msgstr "Language"
+msgstr "Langue"
 
-#: src/slic3r/GUI/GUI_App.cpp:534 src/slic3r/GUI/GUI_ObjectList.cpp:1067
+#: src/slic3r/GUI/GUI_App.cpp:568 src/slic3r/GUI/GUI_ObjectList.cpp:1135
 #: src/libslic3r/PrintConfig.cpp:298
 msgid "Default"
-msgstr "Default"
+msgstr "Défaut"
 
-#: src/slic3r/GUI/GUI_App.cpp:603
+#: src/slic3r/GUI/GUI_App.cpp:635
 msgid "&Configuration Snapshots"
-msgstr "&Configuration Snapshots"
+msgstr "Instantanés de &Configuration"
 
-#: src/slic3r/GUI/GUI_App.cpp:603
+#: src/slic3r/GUI/GUI_App.cpp:635
 msgid "Inspect / activate configuration snapshots"
-msgstr "Inspect / activate configuration snapshots"
+msgstr "Inspecter / activer les instantanés de configuration"
 
-#: src/slic3r/GUI/GUI_App.cpp:604
+#: src/slic3r/GUI/GUI_App.cpp:636
 msgid "Take Configuration &Snapshot"
-msgstr "Take Configuration &Snapshot"
+msgstr "Prendre un &snapshot de la configuration"
 
-#: src/slic3r/GUI/GUI_App.cpp:604
+#: src/slic3r/GUI/GUI_App.cpp:636
 msgid "Capture a configuration snapshot"
-msgstr "Capture a configuration snapshot"
+msgstr "Capturer un instantané de la configuration"
 
-#: src/slic3r/GUI/GUI_App.cpp:607
+#: src/slic3r/GUI/GUI_App.cpp:639
 msgid "&Preferences"
-msgstr "&Preferences"
+msgstr "&Préférences"
 
-#: src/slic3r/GUI/GUI_App.cpp:613
+#: src/slic3r/GUI/GUI_App.cpp:645
 msgid "Application preferences"
-msgstr "Application preferences"
+msgstr "Préférences de l'application"
 
-#: src/slic3r/GUI/GUI_App.cpp:616 src/slic3r/GUI/wxExtensions.cpp:2446
+#: src/slic3r/GUI/GUI_App.cpp:648 src/slic3r/GUI/wxExtensions.cpp:2457
 msgid "Simple"
-msgstr "Simple"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:616
+#: src/slic3r/GUI/GUI_App.cpp:648
 msgid "Simple View Mode"
-msgstr "Simple View Mode"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:617 src/slic3r/GUI/GUI_ObjectList.cpp:73
+#: src/slic3r/GUI/GUI_App.cpp:649 src/slic3r/GUI/GUI_ObjectList.cpp:76
 #: src/slic3r/GUI/Tab.cpp:977 src/slic3r/GUI/Tab.cpp:992
 #: src/slic3r/GUI/Tab.cpp:1090 src/slic3r/GUI/Tab.cpp:1093
 #: src/slic3r/GUI/Tab.cpp:1466 src/slic3r/GUI/Tab.cpp:1890
-#: src/slic3r/GUI/Tab.cpp:3347 src/slic3r/GUI/wxExtensions.cpp:2447
+#: src/slic3r/GUI/Tab.cpp:3349 src/slic3r/GUI/wxExtensions.cpp:2458
 #: src/libslic3r/PrintConfig.cpp:72 src/libslic3r/PrintConfig.cpp:186
 #: src/libslic3r/PrintConfig.cpp:349 src/libslic3r/PrintConfig.cpp:987
 #: src/libslic3r/PrintConfig.cpp:2173
 msgid "Advanced"
-msgstr "Advanced"
+msgstr "Avancé"
 
-#: src/slic3r/GUI/GUI_App.cpp:617
+#: src/slic3r/GUI/GUI_App.cpp:649
 msgid "Advanced View Mode"
-msgstr "Advanced View Mode"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:618 src/slic3r/GUI/wxExtensions.cpp:2448
+#: src/slic3r/GUI/GUI_App.cpp:650 src/slic3r/GUI/wxExtensions.cpp:2459
 msgid "Expert"
-msgstr "Expert"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:618
+#: src/slic3r/GUI/GUI_App.cpp:650
 msgid "Expert View Mode"
-msgstr "Expert View Mode"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:623
+#: src/slic3r/GUI/GUI_App.cpp:655
 msgid "Mode"
-msgstr "Mode"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:623
+#: src/slic3r/GUI/GUI_App.cpp:655
 msgid "Slic3r View Mode"
-msgstr "Slic3r View Mode"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:625
+#: src/slic3r/GUI/GUI_App.cpp:657
 msgid "Change Application &Language"
-msgstr "Change Application &Language"
+msgstr "Changer la &langue de l'application"
 
-#: src/slic3r/GUI/GUI_App.cpp:627
+#: src/slic3r/GUI/GUI_App.cpp:659
 msgid "Flash printer &firmware"
-msgstr "Flash printer &firmware"
+msgstr "Flasher le &firmware de l'imprimante"
 
-#: src/slic3r/GUI/GUI_App.cpp:627
+#: src/slic3r/GUI/GUI_App.cpp:659
 msgid "Upload a firmware image into an Arduino based printer"
-msgstr "Upload a firmware image into an Arduino based printer"
+msgstr "Charger un firmware dans une imprimante basée sur un Arduino"
 
-#: src/slic3r/GUI/GUI_App.cpp:639
+#: src/slic3r/GUI/GUI_App.cpp:671
 msgid "Taking configuration snapshot"
-msgstr "Taking configuration snapshot"
+msgstr "Snapshot de la configuration  en cours"
 
-#: src/slic3r/GUI/GUI_App.cpp:639
+#: src/slic3r/GUI/GUI_App.cpp:671
 msgid "Snapshot name"
-msgstr "Snapshot name"
+msgstr "Nom du snapshot"
 
-#: src/slic3r/GUI/GUI_App.cpp:676
+#: src/slic3r/GUI/GUI_App.cpp:708
 msgid "Application will be restarted after language change."
-msgstr "Application will be restarted after language change."
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:677
+#: src/slic3r/GUI/GUI_App.cpp:709
 msgid "3D-Scene will be cleaned."
-msgstr "3D-Scene will be cleaned."
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:678
+#: src/slic3r/GUI/GUI_App.cpp:710
 msgid "Please, check your changes before."
-msgstr "Please, check your changes before."
+msgstr ""
 
-#: src/slic3r/GUI/GUI_App.cpp:706
+#: src/slic3r/GUI/GUI_App.cpp:738
 msgid "&Configuration"
 msgstr "&Configuration"
 
-#: src/slic3r/GUI/GUI_App.cpp:726
+#: src/slic3r/GUI/GUI_App.cpp:758
 msgid "You have unsaved changes "
-msgstr "You have unsaved changes "
+msgstr "Les modifications n'ont pas été sauvegardées "
 
-#: src/slic3r/GUI/GUI_App.cpp:726
+#: src/slic3r/GUI/GUI_App.cpp:758
 msgid ". Discard changes and continue anyway?"
-msgstr ". Discard changes and continue anyway?"
+msgstr ". Annuler les changements et continuer malgré tout ?"
 
-#: src/slic3r/GUI/GUI_App.cpp:727
+#: src/slic3r/GUI/GUI_App.cpp:759
 msgid "Unsaved Presets"
-msgstr "Unsaved Presets"
+msgstr "Préréglages Non Sauvegardés"
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:65
+#: src/slic3r/GUI/GUI_ObjectList.cpp:28 src/slic3r/GUI/GUI_ObjectList.cpp:68
 #: src/libslic3r/PrintConfig.cpp:56 src/libslic3r/PrintConfig.cpp:149
 #: src/libslic3r/PrintConfig.cpp:380 src/libslic3r/PrintConfig.cpp:437
 #: src/libslic3r/PrintConfig.cpp:445 src/libslic3r/PrintConfig.cpp:841
@@ -1043,10 +1048,10 @@ msgstr "Unsaved Presets"
 #: src/libslic3r/PrintConfig.cpp:1370 src/libslic3r/PrintConfig.cpp:1551
 #: src/libslic3r/PrintConfig.cpp:1986 src/libslic3r/PrintConfig.cpp:2042
 msgid "Layers and Perimeters"
-msgstr "Layers and Perimeters"
+msgstr "Couches et Périmètres"
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:66
-#: src/slic3r/GUI/Plater.cpp:431 src/slic3r/GUI/Tab.cpp:981
+#: src/slic3r/GUI/GUI_ObjectList.cpp:29 src/slic3r/GUI/GUI_ObjectList.cpp:69
+#: src/slic3r/GUI/Plater.cpp:430 src/slic3r/GUI/Tab.cpp:981
 #: src/slic3r/GUI/Tab.cpp:982 src/slic3r/GUI/Tab.cpp:1311
 #: src/libslic3r/PrintConfig.cpp:166 src/libslic3r/PrintConfig.cpp:388
 #: src/libslic3r/PrintConfig.cpp:728 src/libslic3r/PrintConfig.cpp:742
@@ -1055,9 +1060,9 @@ msgstr "Layers and Perimeters"
 #: src/libslic3r/PrintConfig.cpp:978 src/libslic3r/PrintConfig.cpp:997
 #: src/libslic3r/PrintConfig.cpp:1658 src/libslic3r/PrintConfig.cpp:1675
 msgid "Infill"
-msgstr "Infill"
+msgstr "Remplissage"
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:67
+#: src/slic3r/GUI/GUI_ObjectList.cpp:30 src/slic3r/GUI/GUI_ObjectList.cpp:70
 #: src/slic3r/GUI/GUI_Preview.cpp:236 src/slic3r/GUI/Tab.cpp:1010
 #: src/slic3r/GUI/Tab.cpp:1011 src/libslic3r/PrintConfig.cpp:333
 #: src/libslic3r/PrintConfig.cpp:1431 src/libslic3r/PrintConfig.cpp:1779
@@ -1072,1209 +1077,1233 @@ msgstr "Infill"
 #: src/libslic3r/PrintConfig.cpp:1955 src/libslic3r/PrintConfig.cpp:1969
 #: src/libslic3r/GCode/PreviewData.cpp:172
 msgid "Support material"
-msgstr "Support material"
+msgstr "Support"
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:69
+#: src/slic3r/GUI/GUI_ObjectList.cpp:33 src/slic3r/GUI/GUI_ObjectList.cpp:72
 #: src/slic3r/GUI/Tab.cpp:1070 src/slic3r/GUI/Tab.cpp:1794
 #: src/libslic3r/PrintConfig.cpp:455 src/libslic3r/PrintConfig.cpp:953
 #: src/libslic3r/PrintConfig.cpp:1339 src/libslic3r/PrintConfig.cpp:1667
 #: src/libslic3r/PrintConfig.cpp:1851 src/libslic3r/PrintConfig.cpp:1877
 #: src/libslic3r/PrintConfig.cpp:2149 src/libslic3r/PrintConfig.cpp:2157
 msgid "Extruders"
-msgstr "Extruders"
+msgstr "Extrudeurs"
 
 #: src/slic3r/GUI/GUI_ObjectList.cpp:39
 msgid "Pad and Support"
-msgstr "Pad and Support"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:68 src/slic3r/GUI/GUI_Preview.cpp:215
+#: src/slic3r/GUI/GUI_ObjectList.cpp:71 src/slic3r/GUI/GUI_Preview.cpp:215
 #: src/slic3r/GUI/Tab.cpp:1035 src/libslic3r/PrintConfig.cpp:198
 #: src/libslic3r/PrintConfig.cpp:425 src/libslic3r/PrintConfig.cpp:870
 #: src/libslic3r/PrintConfig.cpp:998 src/libslic3r/PrintConfig.cpp:1360
 #: src/libslic3r/PrintConfig.cpp:1597 src/libslic3r/PrintConfig.cpp:1646
 #: src/libslic3r/PrintConfig.cpp:1697 src/libslic3r/PrintConfig.cpp:2028
 msgid "Speed"
-msgstr "Speed"
+msgstr "Vitesse"
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:70 src/libslic3r/PrintConfig.cpp:415
+#: src/slic3r/GUI/GUI_ObjectList.cpp:73 src/libslic3r/PrintConfig.cpp:415
 #: src/libslic3r/PrintConfig.cpp:522 src/libslic3r/PrintConfig.cpp:829
 #: src/libslic3r/PrintConfig.cpp:961 src/libslic3r/PrintConfig.cpp:1348
 #: src/libslic3r/PrintConfig.cpp:1687 src/libslic3r/PrintConfig.cpp:1860
 #: src/libslic3r/PrintConfig.cpp:2017
 msgid "Extrusion Width"
-msgstr "Extrusion Width"
+msgstr "Largeur d'Extrusion"
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:75 src/slic3r/GUI/Plater.cpp:410
-#: src/slic3r/GUI/Tab.cpp:3309 src/slic3r/GUI/Tab.cpp:3310
-#: src/libslic3r/PrintConfig.cpp:2359 src/libslic3r/PrintConfig.cpp:2366
-#: src/libslic3r/PrintConfig.cpp:2375 src/libslic3r/PrintConfig.cpp:2384
-#: src/libslic3r/PrintConfig.cpp:2394 src/libslic3r/PrintConfig.cpp:2420
-#: src/libslic3r/PrintConfig.cpp:2427 src/libslic3r/PrintConfig.cpp:2438
-#: src/libslic3r/PrintConfig.cpp:2448 src/libslic3r/PrintConfig.cpp:2457
-#: src/libslic3r/PrintConfig.cpp:2467 src/libslic3r/PrintConfig.cpp:2476
-#: src/libslic3r/PrintConfig.cpp:2486 src/libslic3r/PrintConfig.cpp:2496
-#: src/libslic3r/PrintConfig.cpp:2504
+#: src/slic3r/GUI/GUI_ObjectList.cpp:78 src/slic3r/GUI/Plater.cpp:409
+#: src/slic3r/GUI/Tab.cpp:3311 src/slic3r/GUI/Tab.cpp:3312
+#: src/libslic3r/PrintConfig.cpp:2361 src/libslic3r/PrintConfig.cpp:2368
+#: src/libslic3r/PrintConfig.cpp:2377 src/libslic3r/PrintConfig.cpp:2386
+#: src/libslic3r/PrintConfig.cpp:2396 src/libslic3r/PrintConfig.cpp:2422
+#: src/libslic3r/PrintConfig.cpp:2429 src/libslic3r/PrintConfig.cpp:2440
+#: src/libslic3r/PrintConfig.cpp:2450 src/libslic3r/PrintConfig.cpp:2459
+#: src/libslic3r/PrintConfig.cpp:2469 src/libslic3r/PrintConfig.cpp:2478
+#: src/libslic3r/PrintConfig.cpp:2488 src/libslic3r/PrintConfig.cpp:2498
+#: src/libslic3r/PrintConfig.cpp:2506
 msgid "Supports"
-msgstr "Supports"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:76 src/slic3r/GUI/Tab.cpp:3337
-#: src/slic3r/GUI/Tab.cpp:3338 src/libslic3r/PrintConfig.cpp:2512
-#: src/libslic3r/PrintConfig.cpp:2519 src/libslic3r/PrintConfig.cpp:2530
-#: src/libslic3r/PrintConfig.cpp:2540 src/libslic3r/PrintConfig.cpp:2553
-#: src/libslic3r/PrintConfig.cpp:2562
+#: src/slic3r/GUI/GUI_ObjectList.cpp:79 src/slic3r/GUI/Tab.cpp:3339
+#: src/slic3r/GUI/Tab.cpp:3340 src/libslic3r/PrintConfig.cpp:2514
+#: src/libslic3r/PrintConfig.cpp:2521 src/libslic3r/PrintConfig.cpp:2535
+#: src/libslic3r/PrintConfig.cpp:2545 src/libslic3r/PrintConfig.cpp:2558
+#: src/libslic3r/PrintConfig.cpp:2567
 msgid "Pad"
-msgstr "Pad"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:173
+#: src/slic3r/GUI/GUI_ObjectList.cpp:176
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:45
 msgid "Name"
-msgstr "Name"
+msgstr "Nom"
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:201
+#: src/slic3r/GUI/GUI_ObjectList.cpp:204
 msgid "Right button click the icon to change the object settings"
-msgstr "Right button click the icon to change the object settings"
-
-#: src/slic3r/GUI/GUI_ObjectList.cpp:209
-#, c-format
-msgid "Auto-repaired (%d errors):\n"
-msgstr "Auto-repaired (%d errors):\n"
+msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectList.cpp:212
-msgid "degenerate facets"
-msgstr "degenerate facets"
-
-#: src/slic3r/GUI/GUI_ObjectList.cpp:213
-msgid "edges fixed"
-msgstr "edges fixed"
-
-#: src/slic3r/GUI/GUI_ObjectList.cpp:214
-msgid "facets removed"
-msgstr "facets removed"
+#, c-format
+msgid "Auto-repaired (%d errors):\n"
+msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectList.cpp:215
-msgid "facets added"
-msgstr "facets added"
+msgid "degenerate facets"
+msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectList.cpp:216
-msgid "facets reversed"
-msgstr "facets reversed"
+msgid "edges fixed"
+msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectList.cpp:217
+msgid "facets removed"
+msgstr ""
+
+#: src/slic3r/GUI/GUI_ObjectList.cpp:218
+msgid "facets added"
+msgstr ""
+
+#: src/slic3r/GUI/GUI_ObjectList.cpp:219
+msgid "facets reversed"
+msgstr ""
+
+#: src/slic3r/GUI/GUI_ObjectList.cpp:220
 msgid "backwards edges"
-msgstr "backwards edges"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:231
+#: src/slic3r/GUI/GUI_ObjectList.cpp:234
 msgid "Right button click the icon to fix STL through Netfabb"
-msgstr "Right button click the icon to fix STL through Netfabb"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:278 src/slic3r/GUI/Tab.cpp:1430
+#: src/slic3r/GUI/GUI_ObjectList.cpp:281 src/slic3r/GUI/Tab.cpp:1430
 #: src/libslic3r/PrintConfig.cpp:454
 msgid "Extruder"
-msgstr "Extruder"
+msgstr "Extrudeur"
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:683 src/slic3r/GUI/GUI_ObjectList.cpp:963
-#: src/slic3r/GUI/GUI_ObjectList.cpp:969 src/slic3r/GUI/GUI_ObjectList.cpp:1199
+#: src/slic3r/GUI/GUI_ObjectList.cpp:751 src/slic3r/GUI/GUI_ObjectList.cpp:1031
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1037
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1267
 #, c-format
 msgid "Quick Add Settings (%s)"
-msgstr "Quick Add Settings (%s)"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:746
+#: src/slic3r/GUI/GUI_ObjectList.cpp:814
 msgid "Select showing settings"
-msgstr "Select showing settings"
-
-#: src/slic3r/GUI/GUI_ObjectList.cpp:874
-msgid "Load"
-msgstr "Load"
-
-#: src/slic3r/GUI/GUI_ObjectList.cpp:879 src/slic3r/GUI/GUI_ObjectList.cpp:911
-#: src/slic3r/GUI/GUI_ObjectList.cpp:914
-msgid "Box"
-msgstr "Box"
-
-#: src/slic3r/GUI/GUI_ObjectList.cpp:879
-msgid "Cylinder"
-msgstr "Cylinder"
-
-#: src/slic3r/GUI/GUI_ObjectList.cpp:879
-msgid "Sphere"
-msgstr "Sphere"
-
-#: src/slic3r/GUI/GUI_ObjectList.cpp:879
-msgid "Slab"
-msgstr "Slab"
-
-#: src/slic3r/GUI/GUI_ObjectList.cpp:890 src/slic3r/GUI/GUI_ObjectList.cpp:906
-msgid "Add part"
-msgstr "Add part"
-
-#: src/slic3r/GUI/GUI_ObjectList.cpp:891
-msgid "Add modifier"
-msgstr "Add modifier"
-
-#: src/slic3r/GUI/GUI_ObjectList.cpp:892 src/slic3r/GUI/GUI_ObjectList.cpp:910
-msgid "Add support enforcer"
-msgstr "Add support enforcer"
-
-#: src/slic3r/GUI/GUI_ObjectList.cpp:893 src/slic3r/GUI/GUI_ObjectList.cpp:913
-msgid "Add support blocker"
-msgstr "Add support blocker"
-
-#: src/slic3r/GUI/GUI_ObjectList.cpp:934
-msgid "Split to parts"
-msgstr "Split to parts"
+msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectList.cpp:942
+msgid "Load"
+msgstr ""
+
+#: src/slic3r/GUI/GUI_ObjectList.cpp:947 src/slic3r/GUI/GUI_ObjectList.cpp:979
+#: src/slic3r/GUI/GUI_ObjectList.cpp:982
+msgid "Box"
+msgstr ""
+
+#: src/slic3r/GUI/GUI_ObjectList.cpp:947
+msgid "Cylinder"
+msgstr ""
+
+#: src/slic3r/GUI/GUI_ObjectList.cpp:947
+msgid "Sphere"
+msgstr ""
+
+#: src/slic3r/GUI/GUI_ObjectList.cpp:947
+msgid "Slab"
+msgstr ""
+
+#: src/slic3r/GUI/GUI_ObjectList.cpp:958 src/slic3r/GUI/GUI_ObjectList.cpp:974
+msgid "Add part"
+msgstr ""
+
+#: src/slic3r/GUI/GUI_ObjectList.cpp:959
+msgid "Add modifier"
+msgstr ""
+
+#: src/slic3r/GUI/GUI_ObjectList.cpp:960 src/slic3r/GUI/GUI_ObjectList.cpp:978
+msgid "Add support enforcer"
+msgstr ""
+
+#: src/slic3r/GUI/GUI_ObjectList.cpp:961 src/slic3r/GUI/GUI_ObjectList.cpp:981
+msgid "Add support blocker"
+msgstr ""
+
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1002
+msgid "Split to parts"
+msgstr ""
+
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1010
 msgid "Add settings"
-msgstr "Add settings"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1009
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1077
 msgid "Change type"
-msgstr "Change type"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1016
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1153
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1084
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1221
 msgid "Set as a Separated Object"
-msgstr "Set as a Separated Object"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1024
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1092
 msgid "Rename"
-msgstr "Rename"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1034
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1102
 msgid "Fix through the Netfabb"
-msgstr "Fix through the Netfabb"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1041 src/slic3r/GUI/Plater.cpp:2861
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1109 src/slic3r/GUI/Plater.cpp:2883
 msgid "Export as STL"
-msgstr "Export as STL"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1048
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1116
 msgid "Change extruder"
-msgstr "Change extruder"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1073
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1141
 msgid "Select new extruder for the object/part"
-msgstr "Select new extruder for the object/part"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1079 src/slic3r/GUI/Plater.cpp:2825
-#: src/slic3r/GUI/Plater.cpp:2843 src/slic3r/GUI/Tab.cpp:2860
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1147 src/slic3r/GUI/Plater.cpp:2847
+#: src/slic3r/GUI/Plater.cpp:2865 src/slic3r/GUI/Tab.cpp:2861
 msgid "Delete"
-msgstr "Delete"
+msgstr "Supprimer"
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1153
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1221
 msgid "Set as a Separated Objects"
-msgstr "Set as a Separated Objects"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1374
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1442
 msgid "Generic"
-msgstr "Generic"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1516
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1582
 msgid "You can't delete the last solid part from object."
-msgstr "You can't delete the last solid part from object."
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1533
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1599
 msgid "You can't delete the last intance from object."
-msgstr "You can't delete the last intance from object."
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1560 src/slic3r/GUI/Plater.cpp:2219
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1626 src/slic3r/GUI/Plater.cpp:2235
 msgid ""
 "The selected object couldn't be split because it contains only one part."
 msgstr ""
-"The selected object couldn't be split because it contains only one part."
+"L'objet sélectionné n'a pu être scindé car il ne contient qu'une seule pièce."
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1676
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1742
 msgid "Group manipulation"
-msgstr "Group manipulation"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1688
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1754
 msgid "Object manipulation"
-msgstr "Object manipulation"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1698
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1764
 msgid "Object Settings to modify"
-msgstr "Object Settings to modify"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1702
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1768
 msgid "Part Settings to modify"
-msgstr "Part Settings to modify"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1711
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1777
 msgid "Part manipulation"
-msgstr "Part manipulation"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:1717
+#: src/slic3r/GUI/GUI_ObjectList.cpp:1783
 msgid "Instance manipulation"
-msgstr "Instance manipulation"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2240
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2307
 msgid "Object or Instance"
-msgstr "Object or Instance"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2240
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2307
 msgid "Part"
-msgstr "Part"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2242
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2309
 msgid "Unsupported selection"
-msgstr "Unsupported selection"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2243
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2310
 #, c-format
 msgid "You started your selection with %s Item."
-msgstr "You started your selection with %s Item."
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2244
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2311
 #, c-format
 msgid "In this mode you can select only other %s Items%s"
-msgstr "In this mode you can select only other %s Items%s"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2247
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2314
 msgid "of a current Object"
-msgstr "of a current Object"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2252
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2325 src/slic3r/GUI/Plater.cpp:117
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2319
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2392 src/slic3r/GUI/Plater.cpp:117
 msgid "Info"
 msgstr "Info"
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2366
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2433
 msgid "You can't change a type of the last solid part of the object."
-msgstr "You can't change a type of the last solid part of the object."
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2373
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2440
 msgid "Select type of part"
-msgstr "Select type of part"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2538
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2605
 msgid "Enter new name"
-msgstr "Enter new name"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2538
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2605
 msgid "Renaming"
-msgstr "Renaming"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2554
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2632 src/slic3r/GUI/Tab.cpp:3191
-#: src/slic3r/GUI/Tab.cpp:3195
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2621
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2699 src/slic3r/GUI/Tab.cpp:3192
+#: src/slic3r/GUI/Tab.cpp:3196
 msgid "The supplied name is not valid;"
 msgstr "The supplied name is not valid;"
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2555
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2633 src/slic3r/GUI/Tab.cpp:3192
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2622
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2700 src/slic3r/GUI/Tab.cpp:3193
 msgid "the following characters are not allowed:"
 msgstr "the following characters are not allowed:"
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2653
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2720
 msgid "Set extruder for selected items"
-msgstr "Set extruder for selected items"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2654
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2721
 msgid "Select extruder number for selected objects and/or parts"
-msgstr "Select extruder number for selected objects and/or parts"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2667
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2734
 msgid "Select extruder number:"
-msgstr "Select extruder number:"
+msgstr ""
 
-#: src/slic3r/GUI/GUI_ObjectList.cpp:2668
+#: src/slic3r/GUI/GUI_ObjectList.cpp:2735
 msgid "This extruder will be set for selected items"
-msgstr "This extruder will be set for selected items"
+msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:25
 msgid "Object Manipulation"
-msgstr "Object Manipulation"
+msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:47
 msgid "Object name"
-msgstr "Object name"
+msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:115
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:160
 msgid "Position"
-msgstr "Position"
+msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:116
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:161
 msgid "Rotation"
-msgstr "Rotation"
+msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:117
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:201
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:221
-#: src/libslic3r/PrintConfig.cpp:3070
+#: src/libslic3r/PrintConfig.cpp:3075
 msgid "Scale"
-msgstr "Scale"
+msgstr "Redimensionner"
 
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:162
 msgid "Scale factors"
-msgstr "Scale factors"
+msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:200
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:220
-#: src/libslic3r/PrintConfig.cpp:3055
+#: src/libslic3r/PrintConfig.cpp:3060
 msgid "Rotate"
-msgstr "Rotate"
+msgstr "Pivoter"
 
 #: src/slic3r/GUI/GUI_ObjectManipulation.cpp:219
 msgid "Translate"
-msgstr "Translate"
+msgstr ""
 
 #: src/slic3r/GUI/GUI_ObjectSettings.cpp:58
 msgid "Additional Settings"
-msgstr "Additional Settings"
+msgstr ""
 
 #: src/slic3r/GUI/GUI_Preview.cpp:209
 msgid "View"
-msgstr "View"
+msgstr "Vue"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:212 src/slic3r/GUI/GUI_Preview.cpp:525
 #: src/libslic3r/GCode/PreviewData.cpp:394
 msgid "Feature type"
-msgstr "Feature type"
+msgstr "Type de fonctionnalité"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:213 src/libslic3r/PrintConfig.cpp:467
 msgid "Height"
-msgstr "Height"
+msgstr "Hauteur"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:214 src/libslic3r/PrintConfig.cpp:2135
 msgid "Width"
-msgstr "Width"
+msgstr "Largeur"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:216
 msgid "Volumetric flow rate"
-msgstr "Volumetric flow rate"
+msgstr "Débit volumétrique"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:217 src/slic3r/GUI/GUI_Preview.cpp:315
 #: src/slic3r/GUI/GUI_Preview.cpp:469 src/slic3r/GUI/GUI_Preview.cpp:525
 #: src/slic3r/GUI/GUI_Preview.cpp:701 src/libslic3r/GCode/PreviewData.cpp:404
 msgid "Tool"
-msgstr "Tool"
+msgstr "Outil"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:218 src/slic3r/GUI/GUI_Preview.cpp:523
 #: src/libslic3r/GCode/PreviewData.cpp:406
 msgid "Color Print"
-msgstr "Color Print"
+msgstr ""
 
 #: src/slic3r/GUI/GUI_Preview.cpp:221
 msgid "Show"
-msgstr "Show"
+msgstr "Afficher"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:224 src/slic3r/GUI/GUI_Preview.cpp:225
 msgid "Feature types"
-msgstr "Feature types"
+msgstr "Types de fonctionnalité"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:227 src/libslic3r/GCode/PreviewData.cpp:163
 msgid "Perimeter"
-msgstr "Perimeter"
+msgstr "Périmètre"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:228 src/libslic3r/GCode/PreviewData.cpp:164
 msgid "External perimeter"
-msgstr "External perimeter"
+msgstr "Périmètre externe"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:229 src/libslic3r/GCode/PreviewData.cpp:165
 msgid "Overhang perimeter"
-msgstr "Overhang perimeter"
+msgstr "Périmètre en surplomb"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:230 src/libslic3r/GCode/PreviewData.cpp:166
 msgid "Internal infill"
-msgstr "Internal infill"
+msgstr "Remplissage interne"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:231 src/libslic3r/PrintConfig.cpp:1686
 #: src/libslic3r/PrintConfig.cpp:1696 src/libslic3r/GCode/PreviewData.cpp:167
 msgid "Solid infill"
-msgstr "Solid infill"
+msgstr "Remplissage solide"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:232 src/libslic3r/PrintConfig.cpp:2016
 #: src/libslic3r/PrintConfig.cpp:2027 src/libslic3r/GCode/PreviewData.cpp:168
 msgid "Top solid infill"
-msgstr "Top solid infill"
+msgstr "Remplissage solide supérieur"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:233 src/libslic3r/GCode/PreviewData.cpp:169
 msgid "Bridge infill"
-msgstr "Bridge infill"
+msgstr "Remplissage du pont"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:234 src/libslic3r/PrintConfig.cpp:869
 #: src/libslic3r/GCode/PreviewData.cpp:170
 msgid "Gap fill"
-msgstr "Gap fill"
+msgstr "Remplissage des trous"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:235 src/slic3r/GUI/Tab.cpp:1001
 #: src/libslic3r/GCode/PreviewData.cpp:171
 msgid "Skirt"
-msgstr "Skirt"
+msgstr "Jupe"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:237 src/libslic3r/PrintConfig.cpp:1903
 #: src/libslic3r/GCode/PreviewData.cpp:173
 msgid "Support material interface"
-msgstr "Support material interface"
+msgstr "Interface des supports"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:238 src/slic3r/GUI/Tab.cpp:1081
 #: src/libslic3r/GCode/PreviewData.cpp:174
 msgid "Wipe tower"
-msgstr "Wipe tower"
+msgstr "Tour de nettoyage"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:243 src/libslic3r/PrintConfig.cpp:2049
 msgid "Travel"
-msgstr "Travel"
+msgstr "Déplacement"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:244
 msgid "Retractions"
-msgstr "Retractions"
+msgstr "Rétractations"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:245
 msgid "Unretractions"
-msgstr "Unretractions"
+msgstr "Dérétractation"
 
 #: src/slic3r/GUI/GUI_Preview.cpp:246
 msgid "Shells"
-msgstr "Shells"
+msgstr "Coques"
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:13
-msgid "Slic3r Prusa Edition - Keyboard Shortcuts"
-msgstr "Slic3r Prusa Edition - Keyboard Shortcuts"
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:13 src/slic3r/GUI/MainFrame.cpp:491
+msgid "Keyboard Shortcuts"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:100
 msgid "Open project STL/OBJ/AMF/3MF with config, delete bed"
-msgstr "Open project STL/OBJ/AMF/3MF with config, delete bed"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:101
 msgid "Import STL/OBJ/AMF/3MF without config, keep bed"
-msgstr "Import STL/OBJ/AMF/3MF without config, keep bed"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:102
 msgid "Load Config from .ini/amf/3mf/gcode"
-msgstr "Load Config from .ini/amf/3mf/gcode"
+msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 src/slic3r/GUI/Plater.cpp:725
-#: src/slic3r/GUI/Plater.cpp:3673 src/libslic3r/PrintConfig.cpp:2957
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:103 src/slic3r/GUI/Plater.cpp:724
+#: src/slic3r/GUI/Plater.cpp:3704 src/libslic3r/PrintConfig.cpp:2962
 msgid "Export G-code"
-msgstr "Export G-code"
+msgstr "Exporter le G-code"
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:104
 msgid "Save project (3MF)"
-msgstr "Save project (3MF)"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:105
 msgid "Load Config from .ini/amf/3mf/gcode and merge"
-msgstr "Load Config from .ini/amf/3mf/gcode and merge"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:106
 msgid "(Re)slice"
-msgstr "(Re)slice"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:107
 msgid "Quick slice"
-msgstr "Quick slice"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:108 src/slic3r/GUI/MainFrame.cpp:326
 msgid "Repeat last quick slice"
-msgstr "Repeat last quick slice"
+msgstr "Répéter le dernier découpage rapide"
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:109
 msgid "Select Plater Tab"
-msgstr "Select Plater Tab"
+msgstr "Sélectionner l'Onglet du Plateau"
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:110
 msgid "Quick slice and Save as"
-msgstr "Quick slice and Save as"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:111
 msgid "Select Print Settings Tab"
-msgstr "Select Print Settings Tab"
+msgstr "Sélectionner l'Onglet des Réglages d'Impression"
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:112
 msgid "Select Filament Settings Tab"
-msgstr "Select Filament Settings Tab"
+msgstr "Sélectionner l'Onglet des Réglages du Filament"
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:113
 msgid "Select Printer Settings Tab"
-msgstr "Select Printer Settings Tab"
+msgstr "Sélectionner l'Onglet des Réglages de l'Imprimante"
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:114
 msgid "Switch to 3D"
-msgstr "Switch to 3D"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:115
 msgid "Switch to Preview"
-msgstr "Switch to Preview"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:116 src/slic3r/GUI/Preferences.cpp:10
 msgid "Preferences"
-msgstr "Preferences"
+msgstr "Préférences"
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:117
 #: src/slic3r/GUI/PrintHostDialogs.cpp:134
 msgid "Print host upload queue"
-msgstr "Print host upload queue"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:118
 msgid "Camera view "
-msgstr "Camera view "
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:119
 msgid "Add Instance to selected object "
-msgstr "Add Instance to selected object "
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:120
 msgid "Remove Instance from selected object"
-msgstr "Remove Instance from selected object"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:121
 msgid "Show keyboard shortcuts list"
-msgstr "Show keyboard shortcuts list"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:122
 msgid "Select multiple object/Move multiple object"
-msgstr "Select multiple object/Move multiple object"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:124
 msgid "Main Shortcuts"
-msgstr "Main Shortcuts"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:130
 msgid "Arrange"
-msgstr "Arrange"
+msgstr "Agencer"
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:131
 msgid "Select All objects"
-msgstr "Select All objects"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:132
 msgid "Delete selected"
-msgstr "Delete selected"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:133
 msgid "Delete All"
-msgstr "Delete All"
+msgstr "Tout Supprimer"
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:134
-msgid "Gizmo move"
-msgstr "Gizmo move"
+msgid "Copy to clipboard"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:135
-msgid "Gizmo scale"
-msgstr "Gizmo scale"
+msgid "Paste from clipboard"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:136
-msgid "Gizmo rotate"
-msgstr "Gizmo rotate"
+msgid "Gizmo move"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:137
-msgid "Gizmo cut"
-msgstr "Gizmo cut"
+msgid "Gizmo scale"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:138
-msgid "Gizmo Place face on bed"
-msgstr "Gizmo Place face on bed"
+msgid "Gizmo rotate"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:139
-msgid "Gizmo SLA support points"
-msgstr "Gizmo SLA support points"
+msgid "Gizmo cut"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:140
-#, no-c-format
-msgid ""
-"Press to snap by 5% in Gizmo scale\n"
-"or by 1mm in Gizmo move"
+msgid "Gizmo Place face on bed"
 msgstr ""
-"Press to snap by 5% in Gizmo scale\n"
-"or by 1mm in Gizmo move"
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:141
+msgid "Gizmo SLA support points"
+msgstr ""
+
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:142
+#, c-format
+msgid ""
+"Press to snap by 5% in Gizmo scale\n"
+"or by 1mm in Gizmo move"
+msgstr ""
+
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:143
 msgid ""
 "Press to scale or rotate selected objects\n"
 "around their own center"
 msgstr ""
-"Press to scale or rotate selected objects\n"
-"around their own center"
-
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:142
-msgid "Zoom to Bed"
-msgstr "Zoom to Bed"
-
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:143
-msgid "Zoom to all objects in scene, if none selected"
-msgstr "Zoom to all objects in scene, if none selected"
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:144
-msgid "Zoom to selected object"
-msgstr "Zoom to selected object"
+msgid "Zoom to Bed"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:145
-msgid "Zoom in"
-msgstr "Zoom in"
+msgid "Zoom to all objects in scene, if none selected"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:146
-msgid "Zoom out"
-msgstr "Zoom out"
+msgid "Zoom to selected object"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:147
-msgid "Unselect gizmo, keep object selection"
-msgstr "Unselect gizmo, keep object selection"
+msgid "Zoom in"
+msgstr ""
+
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:148
+msgid "Zoom out"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:149
+msgid "Unselect gizmo, keep object selection"
+msgstr ""
+
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:151
 msgid "Plater Shortcuts"
-msgstr "Plater Shortcuts"
+msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:164
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:175
-msgid "Arrow Up"
-msgstr "Arrow Up"
-
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:164
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:166
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:177
+msgid "Arrow Up"
+msgstr ""
+
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:166
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:168
 msgid "Upper Layer"
-msgstr "Upper Layer"
+msgstr ""
 
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:165
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:176
-msgid "Arrow Down"
-msgstr "Arrow Down"
-
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:165
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:167
-msgid "Lower Layer"
-msgstr "Lower Layer"
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:178
+msgid "Arrow Down"
+msgstr ""
 
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:167
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:169
+msgid "Lower Layer"
+msgstr ""
+
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:171
 msgid "Preview Shortcuts"
-msgstr "Preview Shortcuts"
-
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:175
-msgid "Move current slider thump Up"
-msgstr "Move current slider thump Up"
-
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:176
-msgid "Move current slider thump Down"
-msgstr "Move current slider thump Down"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:177
-msgid "Arrow Left"
-msgstr "Arrow Left"
-
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:177
-msgid "Set upper thumb to current slider thumb"
-msgstr "Set upper thumb to current slider thumb"
+msgid "Move current slider thumb Up"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:178
-msgid "Arrow Right"
-msgstr "Arrow Right"
-
-#: src/slic3r/GUI/KBShortcutsDialog.cpp:178
-msgid "Set lower thumb to current slider thumb"
-msgstr "Set lower thumb to current slider thumb"
+msgid "Move current slider thumb Down"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:179
-msgid "Add color change marker for current layer"
-msgstr "Add color change marker for current layer"
+msgid "Arrow Left"
+msgstr ""
+
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:179
+msgid "Set upper thumb to current slider thumb"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:180
-msgid "Delete color change marker for current layer"
-msgstr "Delete color change marker for current layer"
+msgid "Arrow Right"
+msgstr ""
+
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:180
+msgid "Set lower thumb to current slider thumb"
+msgstr ""
+
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:181
+msgid "Add color change marker for current layer"
+msgstr ""
 
 #: src/slic3r/GUI/KBShortcutsDialog.cpp:182
+msgid "Delete color change marker for current layer"
+msgstr ""
+
+#: src/slic3r/GUI/KBShortcutsDialog.cpp:184
 msgid "Layers Slider Shortcuts"
-msgstr "Layers Slider Shortcuts"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:54
 msgid ""
 " - Remember to check for updates at http://github.com/prusa3d/slic3r/releases"
 msgstr ""
-" - Remember to check for updates at http://github.com/prusa3d/slic3r/releases"
+" - Pensez à vérifier les mises à jours sur http://github.com/prusa3d/slic3r/"
+"releases"
 
 #: src/slic3r/GUI/MainFrame.cpp:160
 msgid "Plater"
-msgstr "Plater"
+msgstr "Plateau"
 
 #: src/slic3r/GUI/MainFrame.cpp:273
 msgid "&Open Project"
-msgstr "&Open Project"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:273
 msgid "Open a project file"
-msgstr "Open a project file"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:275
 msgid "&Save Project"
-msgstr "&Save Project"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:275
 msgid "Save current project file"
-msgstr "Save current project file"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:277
 msgid "Save Project &as"
-msgstr "Save Project &as"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:277
 msgid "Save current project file as"
-msgstr "Save current project file as"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:283
 msgid "Import STL/OBJ/AM&F/3MF"
-msgstr "Import STL/OBJ/AM&F/3MF"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:283
 msgid "Load a model"
-msgstr "Load a model"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:286
 msgid "Import &Config"
-msgstr "Import &Config"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:286
 msgid "Load exported configuration file"
-msgstr "Load exported configuration file"
+msgstr "Charger le fichier de configuration exporté"
 
 #: src/slic3r/GUI/MainFrame.cpp:288
 msgid "Import Config from &project"
-msgstr "Import Config from &project"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:288
 msgid "Load configuration from project file"
-msgstr "Load configuration from project file"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:291
 msgid "Import Config &Bundle"
-msgstr "Import Config &Bundle"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:291
 msgid "Load presets from a bundle"
-msgstr "Load presets from a bundle"
+msgstr "Charger les préréglages à partir d'un lot"
 
 #: src/slic3r/GUI/MainFrame.cpp:293
 msgid "&Import"
-msgstr "&Import"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:296
 msgid "Export &G-code"
-msgstr "Export &G-code"
+msgstr "Exporter le &G-code"
 
 #: src/slic3r/GUI/MainFrame.cpp:296
 msgid "Export current plate as G-code"
-msgstr "Export current plate as G-code"
+msgstr "Exporter le plateau courant en G-code"
 
 #: src/slic3r/GUI/MainFrame.cpp:299
 msgid "Export plate as &STL"
-msgstr "Export plate as &STL"
+msgstr "Exporter le plateau en &STL"
 
 #: src/slic3r/GUI/MainFrame.cpp:299
 msgid "Export current plate as STL"
-msgstr "Export current plate as STL"
+msgstr "Exporter le plateau courant en STL"
 
 #: src/slic3r/GUI/MainFrame.cpp:301
 msgid "Export plate as &AMF"
-msgstr "Export plate as &AMF"
+msgstr "Exporter le plateau en &AMF"
 
 #: src/slic3r/GUI/MainFrame.cpp:301
 msgid "Export current plate as AMF"
-msgstr "Export current plate as AMF"
+msgstr "Exporter le plateau courant en AMF"
 
 #: src/slic3r/GUI/MainFrame.cpp:304
 msgid "Export &Config"
-msgstr "Export &Config"
+msgstr "Exporter la &configuration"
 
 #: src/slic3r/GUI/MainFrame.cpp:304
 msgid "Export current configuration to file"
-msgstr "Export current configuration to file"
+msgstr "Exporter la configuration actuelle vers un fichier"
 
 #: src/slic3r/GUI/MainFrame.cpp:306
 msgid "Export Config &Bundle"
-msgstr "Export Config &Bundle"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:306
 msgid "Export all presets to file"
-msgstr "Export all presets to file"
+msgstr "Exporter tous les préréglage vers un fichier"
 
 #: src/slic3r/GUI/MainFrame.cpp:308
 msgid "&Export"
-msgstr "&Export"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:314
 msgid "Quick Slice"
-msgstr "Quick Slice"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:314
 msgid "Slice a file into a G-code"
-msgstr "Slice a file into a G-code"
+msgstr "Découper un fichier en G-code"
 
 #: src/slic3r/GUI/MainFrame.cpp:320
 msgid "Quick Slice and Save As"
-msgstr "Quick Slice and Save As"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:320
 msgid "Slice a file into a G-code, save as"
-msgstr "Slice a file into a G-code, save as"
+msgstr "Découper un fichier en G-code, enregistrer sous"
 
 #: src/slic3r/GUI/MainFrame.cpp:326
 msgid "Repeat Last Quick Slice"
-msgstr "Repeat Last Quick Slice"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:334
 msgid "(Re)Slice &Now"
-msgstr "(Re)Slice &Now"
+msgstr "(Re)Découper mai&ntenant"
 
 #: src/slic3r/GUI/MainFrame.cpp:334
 msgid "Start new slicing process"
-msgstr "Start new slicing process"
+msgstr "Démarrer un nouveau processus de découpe"
 
 #: src/slic3r/GUI/MainFrame.cpp:337
 msgid "&Repair STL file"
-msgstr "&Repair STL file"
+msgstr "&Réparer le fichier STL"
 
 #: src/slic3r/GUI/MainFrame.cpp:337
 msgid "Automatically repair an STL file"
-msgstr "Automatically repair an STL file"
+msgstr "Réparer automatiquement un fichier STL"
 
 #: src/slic3r/GUI/MainFrame.cpp:340
 msgid "&Quit"
-msgstr "&Quit"
+msgstr "&Quitter"
 
 #: src/slic3r/GUI/MainFrame.cpp:340
 msgid "Quit Slic3r"
-msgstr "Quit Slic3r"
+msgstr "Quitter Slic3r"
 
 #: src/slic3r/GUI/MainFrame.cpp:374
 msgid "&Select all"
-msgstr "&Select all"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:374
 msgid "Selects all objects"
-msgstr "Selects all objects"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:377
 msgid "&Delete selected"
-msgstr "&Delete selected"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:377
 msgid "Deletes the current selection"
-msgstr "Deletes the current selection"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:379
 msgid "Delete &all"
-msgstr "Delete &all"
+msgstr ""
 
 #: src/slic3r/GUI/MainFrame.cpp:379
 msgid "Deletes all objects"
-msgstr "Deletes all objects"
+msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:392
+#: src/slic3r/GUI/MainFrame.cpp:384
+msgid "&Copy"
+msgstr ""
+
+#: src/slic3r/GUI/MainFrame.cpp:384
+msgid "Copy selection to clipboard"
+msgstr ""
+
+#: src/slic3r/GUI/MainFrame.cpp:386
+msgid "&Paste"
+msgstr ""
+
+#: src/slic3r/GUI/MainFrame.cpp:386
+msgid "Paste clipboard"
+msgstr ""
+
+#: src/slic3r/GUI/MainFrame.cpp:401
 msgid "&Plater Tab"
-msgstr "&Plater Tab"
+msgstr "L'Onglet du &Plateau"
 
-#: src/slic3r/GUI/MainFrame.cpp:392
+#: src/slic3r/GUI/MainFrame.cpp:401
 msgid "Show the plater"
-msgstr "Show the plater"
+msgstr "Afficher le plateau"
 
-#: src/slic3r/GUI/MainFrame.cpp:399
+#: src/slic3r/GUI/MainFrame.cpp:408
 msgid "P&rint Settings Tab"
-msgstr "P&rint Settings Tab"
+msgstr "L'Onglet des Réglages d'&Impression"
 
-#: src/slic3r/GUI/MainFrame.cpp:399
+#: src/slic3r/GUI/MainFrame.cpp:408
 msgid "Show the print settings"
-msgstr "Show the print settings"
+msgstr "Afficher les réglages d'impression"
 
-#: src/slic3r/GUI/MainFrame.cpp:401
+#: src/slic3r/GUI/MainFrame.cpp:410
 msgid "&Filament Settings Tab"
-msgstr "&Filament Settings Tab"
+msgstr "L'Onglet des Réglages du &Filament"
 
-#: src/slic3r/GUI/MainFrame.cpp:401
+#: src/slic3r/GUI/MainFrame.cpp:410
 msgid "Show the filament settings"
-msgstr "Show the filament settings"
+msgstr "Afficher les réglages de filament"
 
-#: src/slic3r/GUI/MainFrame.cpp:403
+#: src/slic3r/GUI/MainFrame.cpp:412
 msgid "Print&er Settings Tab"
-msgstr "Print&er Settings Tab"
+msgstr "L'Onglet des Réglages de l'Impri&mante"
 
-#: src/slic3r/GUI/MainFrame.cpp:403
+#: src/slic3r/GUI/MainFrame.cpp:412
 msgid "Show the printer settings"
-msgstr "Show the printer settings"
+msgstr "Afficher les réglages de l'imprimante"
 
-#: src/slic3r/GUI/MainFrame.cpp:407
+#: src/slic3r/GUI/MainFrame.cpp:416
 msgid "3&D"
-msgstr "3&D"
+msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:407
+#: src/slic3r/GUI/MainFrame.cpp:416
 msgid "Show the 3D editing view"
-msgstr "Show the 3D editing view"
+msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:409
+#: src/slic3r/GUI/MainFrame.cpp:418
 msgid "Pre&view"
-msgstr "Pre&view"
+msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:409
+#: src/slic3r/GUI/MainFrame.cpp:418
 msgid "Show the 3D slices preview"
-msgstr "Show the 3D slices preview"
+msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:430
+#: src/slic3r/GUI/MainFrame.cpp:439
 msgid "Print &Host Upload Queue"
-msgstr "Print &Host Upload Queue"
+msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:430
+#: src/slic3r/GUI/MainFrame.cpp:439
 msgid "Display the Print Host Upload Queue window"
-msgstr "Display the Print Host Upload Queue window"
+msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:439
+#: src/slic3r/GUI/MainFrame.cpp:448
 msgid "Iso"
-msgstr "Iso"
+msgstr "Isométrique"
 
-#: src/slic3r/GUI/MainFrame.cpp:439
+#: src/slic3r/GUI/MainFrame.cpp:448
 msgid "Iso View"
-msgstr "Iso View"
+msgstr "Vue Isométrique"
 
-#: src/slic3r/GUI/MainFrame.cpp:441
+#: src/slic3r/GUI/MainFrame.cpp:450
 msgid "Top"
-msgstr "Top"
+msgstr "du Dessus"
 
 #: src/libslic3r/PrintConfig.cpp:2041
 msgctxt "Layers"
 msgid "Top"
-msgstr "Top"
+msgstr "Haut"
 
-#: src/slic3r/GUI/MainFrame.cpp:441
+#: src/slic3r/GUI/MainFrame.cpp:450
 msgid "Top View"
-msgstr "Top View"
+msgstr "Vue du Dessus"
 
-#: src/slic3r/GUI/MainFrame.cpp:442
+#: src/slic3r/GUI/MainFrame.cpp:451
 msgid "Bottom"
-msgstr "Bottom"
+msgstr "du Dessous"
 
 #: src/libslic3r/PrintConfig.cpp:148
 msgctxt "Layers"
 msgid "Bottom"
-msgstr "Bottom"
+msgstr "Dessous"
 
-#: src/slic3r/GUI/MainFrame.cpp:442
+#: src/slic3r/GUI/MainFrame.cpp:451
 msgid "Bottom View"
-msgstr "Bottom View"
+msgstr "Vue du Dessous"
 
-#: src/slic3r/GUI/MainFrame.cpp:443
+#: src/slic3r/GUI/MainFrame.cpp:452
 msgid "Front"
-msgstr "Front"
+msgstr "Avant"
 
-#: src/slic3r/GUI/MainFrame.cpp:443
+#: src/slic3r/GUI/MainFrame.cpp:452
 msgid "Front View"
-msgstr "Front View"
+msgstr "Vue Avant"
 
-#: src/slic3r/GUI/MainFrame.cpp:444 src/libslic3r/PrintConfig.cpp:1561
+#: src/slic3r/GUI/MainFrame.cpp:453 src/libslic3r/PrintConfig.cpp:1561
 msgid "Rear"
-msgstr "Rear"
+msgstr "Arrière"
 
-#: src/slic3r/GUI/MainFrame.cpp:444
+#: src/slic3r/GUI/MainFrame.cpp:453
 msgid "Rear View"
-msgstr "Rear View"
+msgstr "Vue Arrière"
 
-#: src/slic3r/GUI/MainFrame.cpp:445
+#: src/slic3r/GUI/MainFrame.cpp:454
 msgid "Left"
-msgstr "Left"
+msgstr "Gauche"
 
-#: src/slic3r/GUI/MainFrame.cpp:445
+#: src/slic3r/GUI/MainFrame.cpp:454
 msgid "Left View"
-msgstr "Left View"
+msgstr "Vue Gauche"
 
-#: src/slic3r/GUI/MainFrame.cpp:446
+#: src/slic3r/GUI/MainFrame.cpp:455
 msgid "Right"
-msgstr "Right"
+msgstr "Droite"
 
-#: src/slic3r/GUI/MainFrame.cpp:446
+#: src/slic3r/GUI/MainFrame.cpp:455
 msgid "Right View"
-msgstr "Right View"
+msgstr "Vue Droite"
 
-#: src/slic3r/GUI/MainFrame.cpp:460
+#: src/slic3r/GUI/MainFrame.cpp:469
 msgid "Prusa 3D &Drivers"
-msgstr "Prusa 3D &Drivers"
+msgstr "&Drivers Prusa 3D"
 
-#: src/slic3r/GUI/MainFrame.cpp:460
+#: src/slic3r/GUI/MainFrame.cpp:469
 msgid "Open the Prusa3D drivers download page in your browser"
-msgstr "Open the Prusa3D drivers download page in your browser"
+msgstr ""
+"Ouvrir la page de téléchargement des drivers Prusa3D dans votre navigateur"
 
-#: src/slic3r/GUI/MainFrame.cpp:462
+#: src/slic3r/GUI/MainFrame.cpp:471
 msgid "Prusa Edition &Releases"
-msgstr "Prusa Edition &Releases"
+msgstr "&Publication de la Prusa Edition"
 
-#: src/slic3r/GUI/MainFrame.cpp:462
+#: src/slic3r/GUI/MainFrame.cpp:471
 msgid "Open the Prusa Edition releases page in your browser"
-msgstr "Open the Prusa Edition releases page in your browser"
+msgstr ""
+"Ouvrir la page des publications de la Prusa Edition dans votre navigateur"
 
-#: src/slic3r/GUI/MainFrame.cpp:468
+#: src/slic3r/GUI/MainFrame.cpp:477
 msgid "Slic3r &Website"
-msgstr "Slic3r &Website"
+msgstr "Site &Web de Slic3r"
 
-#: src/slic3r/GUI/MainFrame.cpp:468
+#: src/slic3r/GUI/MainFrame.cpp:477
 msgid "Open the Slic3r website in your browser"
-msgstr "Open the Slic3r website in your browser"
+msgstr "Ouvrir le site web de Slic3r dans votre navigateur"
 
-#: src/slic3r/GUI/MainFrame.cpp:470
+#: src/slic3r/GUI/MainFrame.cpp:479
 msgid "Slic3r &Manual"
-msgstr "Slic3r &Manual"
+msgstr "&Manuel de Slic3r"
 
-#: src/slic3r/GUI/MainFrame.cpp:470
+#: src/slic3r/GUI/MainFrame.cpp:479
 msgid "Open the Slic3r manual in your browser"
-msgstr "Open the Slic3r manual in your browser"
+msgstr "Ouvrir la manuel de Slic3r dans votre navigateur"
 
-#: src/slic3r/GUI/MainFrame.cpp:473
+#: src/slic3r/GUI/MainFrame.cpp:482
 msgid "System &Info"
-msgstr "System &Info"
+msgstr "&Informations sur le Système"
 
-#: src/slic3r/GUI/MainFrame.cpp:473
+#: src/slic3r/GUI/MainFrame.cpp:482
 msgid "Show system information"
-msgstr "Show system information"
+msgstr "Afficher les informations système"
 
-#: src/slic3r/GUI/MainFrame.cpp:475
+#: src/slic3r/GUI/MainFrame.cpp:484
 msgid "Show &Configuration Folder"
-msgstr "Show &Configuration Folder"
+msgstr "Afficher le Répertoire de &Configuration"
 
-#: src/slic3r/GUI/MainFrame.cpp:475
+#: src/slic3r/GUI/MainFrame.cpp:484
 msgid "Show user configuration folder (datadir)"
-msgstr "Show user configuration folder (datadir)"
+msgstr "Afficher le répertoire de configuration utilisateur (datadir)"
 
-#: src/slic3r/GUI/MainFrame.cpp:477
+#: src/slic3r/GUI/MainFrame.cpp:486
 msgid "Report an I&ssue"
-msgstr "Report an I&ssue"
+msgstr "Signaler un p&roblème"
 
-#: src/slic3r/GUI/MainFrame.cpp:477
-msgid "Report an issue on the Slic3r Prusa Edition"
-msgstr "Report an issue on the Slic3r Prusa Edition"
+#: src/slic3r/GUI/MainFrame.cpp:486
+#, c-format
+msgid "Report an issue on %s"
+msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:479
-msgid "&About Slic3r"
-msgstr "&About Slic3r"
+#: src/slic3r/GUI/MainFrame.cpp:488
+#, c-format
+msgid "&About %s"
+msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:479
+#: src/slic3r/GUI/MainFrame.cpp:488
 msgid "Show about dialog"
-msgstr "Show about dialog"
-
-#: src/slic3r/GUI/MainFrame.cpp:482
-msgid "Keyboard Shortcuts"
-msgstr "Keyboard Shortcuts"
-
-#: src/slic3r/GUI/MainFrame.cpp:482
-msgid "Show the list of the keyboard shortcuts"
-msgstr "Show the list of the keyboard shortcuts"
-
-#: src/slic3r/GUI/MainFrame.cpp:490
-msgid "&File"
-msgstr "&File"
+msgstr "Afficher la boîte de dialogue à propos"
 
 #: src/slic3r/GUI/MainFrame.cpp:491
+msgid "Show the list of the keyboard shortcuts"
+msgstr ""
+
+#: src/slic3r/GUI/MainFrame.cpp:499
+msgid "&File"
+msgstr "&Fichier"
+
+#: src/slic3r/GUI/MainFrame.cpp:500
 msgid "&Edit"
-msgstr "&Edit"
+msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:492
+#: src/slic3r/GUI/MainFrame.cpp:501
 msgid "&Window"
-msgstr "&Window"
+msgstr "Fe&nêtre"
 
-#: src/slic3r/GUI/MainFrame.cpp:493
+#: src/slic3r/GUI/MainFrame.cpp:502
 msgid "&View"
-msgstr "&View"
+msgstr "&Vue"
 
-#: src/slic3r/GUI/MainFrame.cpp:496
+#: src/slic3r/GUI/MainFrame.cpp:505
 msgid "&Help"
-msgstr "&Help"
+msgstr "&Aide"
 
-#: src/slic3r/GUI/MainFrame.cpp:524
+#: src/slic3r/GUI/MainFrame.cpp:533
 msgid "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):"
-msgstr "Choose a file to slice (STL/OBJ/AMF/3MF/PRUSA):"
+msgstr "Choisir un fichier à découper (STL/OBJ/AMF/3MF/PRUSA) :"
 
-#: src/slic3r/GUI/MainFrame.cpp:538
+#: src/slic3r/GUI/MainFrame.cpp:547
 msgid "No previously sliced file."
-msgstr "No previously sliced file."
+msgstr "Aucun fichier précédemment découpé."
 
-#: src/slic3r/GUI/MainFrame.cpp:539 src/slic3r/GUI/PrintHostDialogs.cpp:219
+#: src/slic3r/GUI/MainFrame.cpp:548 src/slic3r/GUI/PrintHostDialogs.cpp:219
 msgid "Error"
-msgstr "Error"
+msgstr "Erreur"
 
-#: src/slic3r/GUI/MainFrame.cpp:544
+#: src/slic3r/GUI/MainFrame.cpp:553
 msgid "Previously sliced file ("
-msgstr "Previously sliced file ("
+msgstr "Fichier précédemment découpé ("
 
-#: src/slic3r/GUI/MainFrame.cpp:544
+#: src/slic3r/GUI/MainFrame.cpp:553
 msgid ") not found."
-msgstr ") not found."
+msgstr ") non trouvé."
 
-#: src/slic3r/GUI/MainFrame.cpp:545
+#: src/slic3r/GUI/MainFrame.cpp:554
 msgid "File Not Found"
-msgstr "File Not Found"
+msgstr "Fichier non trouvé"
 
-#: src/slic3r/GUI/MainFrame.cpp:580 src/slic3r/GUI/Tab.cpp:3152
+#: src/slic3r/GUI/MainFrame.cpp:589 src/slic3r/GUI/Tab.cpp:3153
 msgid "Save "
-msgstr "Save "
+msgstr "Enregistrer "
 
-#: src/slic3r/GUI/MainFrame.cpp:580
+#: src/slic3r/GUI/MainFrame.cpp:589
 msgid "SVG"
 msgstr "SVG"
 
-#: src/slic3r/GUI/MainFrame.cpp:580
+#: src/slic3r/GUI/MainFrame.cpp:589
 msgid "G-code"
 msgstr "G-code"
 
-#: src/slic3r/GUI/MainFrame.cpp:580
+#: src/slic3r/GUI/MainFrame.cpp:589
 msgid " file as:"
-msgstr " file as:"
+msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:595
+#: src/slic3r/GUI/MainFrame.cpp:604
 msgid "Save zip file as:"
-msgstr "Save zip file as:"
+msgstr ""
 
-#: src/slic3r/GUI/MainFrame.cpp:607 src/slic3r/GUI/Plater.cpp:2352
-#: src/slic3r/GUI/Plater.cpp:3467 src/slic3r/GUI/Tab.cpp:1110
-#: src/slic3r/GUI/Tab.cpp:3348
+#: src/slic3r/GUI/MainFrame.cpp:616 src/slic3r/GUI/Plater.cpp:2368
+#: src/slic3r/GUI/Plater.cpp:3498 src/slic3r/GUI/Tab.cpp:1110
+#: src/slic3r/GUI/Tab.cpp:3350
 msgid "Slicing"
-msgstr "Slicing"
+msgstr "Découpe en cours"
 
-#: src/slic3r/GUI/MainFrame.cpp:607
+#: src/slic3r/GUI/MainFrame.cpp:616
 msgid "Processing "
-msgstr "Processing "
+msgstr "Traitement "
 
-#: src/slic3r/GUI/MainFrame.cpp:630
+#: src/slic3r/GUI/MainFrame.cpp:639
 msgid " was successfully sliced."
-msgstr " was successfully sliced."
+msgstr " a été découpé avec succès."
 
-#: src/slic3r/GUI/MainFrame.cpp:632
+#: src/slic3r/GUI/MainFrame.cpp:641
 msgid "Slicing Done!"
-msgstr "Slicing Done!"
+msgstr "Découpe Effectuée !"
 
-#: src/slic3r/GUI/MainFrame.cpp:647
+#: src/slic3r/GUI/MainFrame.cpp:656
 msgid "Select the STL file to repair:"
-msgstr "Select the STL file to repair:"
+msgstr "Sélectionner le fichier STL à réparer :"
 
-#: src/slic3r/GUI/MainFrame.cpp:661
+#: src/slic3r/GUI/MainFrame.cpp:669
 msgid "Save OBJ file (less prone to coordinate errors than STL) as:"
-msgstr "Save OBJ file (less prone to coordinate errors than STL) as:"
+msgstr ""
+"Enregistrer le fichier OBJ (moins enclin aux erreurs de coordonnées que le "
+"STL) sous :"
 
-#: src/slic3r/GUI/MainFrame.cpp:676
+#: src/slic3r/GUI/MainFrame.cpp:684
 msgid "Your file was repaired."
-msgstr "Your file was repaired."
+msgstr "Votre fichier a été réparé."
 
-#: src/slic3r/GUI/MainFrame.cpp:676 src/libslic3r/PrintConfig.cpp:3051
+#: src/slic3r/GUI/MainFrame.cpp:684 src/libslic3r/PrintConfig.cpp:3056
 msgid "Repair"
-msgstr "Repair"
+msgstr "Réparer"
 
-#: src/slic3r/GUI/MainFrame.cpp:690
+#: src/slic3r/GUI/MainFrame.cpp:698
 msgid "Save configuration as:"
-msgstr "Save configuration as:"
+msgstr "Enregistrer la configuration sous :"
 
-#: src/slic3r/GUI/MainFrame.cpp:710 src/slic3r/GUI/MainFrame.cpp:774
+#: src/slic3r/GUI/MainFrame.cpp:718 src/slic3r/GUI/MainFrame.cpp:782
 msgid "Select configuration to load:"
-msgstr "Select configuration to load:"
+msgstr "Sélectionner la configuration à charger :"
 
-#: src/slic3r/GUI/MainFrame.cpp:747
+#: src/slic3r/GUI/MainFrame.cpp:755
 msgid "Save presets bundle as:"
-msgstr "Save presets bundle as:"
+msgstr "Enregistrer le lot de préréglages sous :"
 
-#: src/slic3r/GUI/MainFrame.cpp:798
+#: src/slic3r/GUI/MainFrame.cpp:806
 #, c-format
 msgid "%d presets successfully imported."
-msgstr "%d presets successfully imported."
+msgstr "%d préréglages importés avec succès."
 
 #: src/slic3r/GUI/MsgDialog.cpp:71
 msgid "Slic3r error"
-msgstr "Slic3r error"
+msgstr "Erreur de Slic3r"
 
 #: src/slic3r/GUI/MsgDialog.cpp:71
 msgid "Slic3r has encountered an error"
-msgstr "Slic3r has encountered an error"
+msgstr "Slic3r a rencontré une erreur"
 
 #: src/slic3r/GUI/Plater.cpp:137
 msgid "Volume"
@@ -2282,126 +2311,126 @@ msgstr "Volume"
 
 #: src/slic3r/GUI/Plater.cpp:138
 msgid "Facets"
-msgstr "Facets"
+msgstr "Faces"
 
 #: src/slic3r/GUI/Plater.cpp:139
 msgid "Materials"
-msgstr "Materials"
+msgstr "Matériaux"
 
 #: src/slic3r/GUI/Plater.cpp:142
 msgid "Manifold"
-msgstr "Manifold"
+msgstr "Variété"
 
-#: src/slic3r/GUI/Plater.cpp:188
+#: src/slic3r/GUI/Plater.cpp:187
 msgid "Sliced Info"
-msgstr "Sliced Info"
+msgstr "Informations de découpage"
 
-#: src/slic3r/GUI/Plater.cpp:207 src/slic3r/GUI/Plater.cpp:998
+#: src/slic3r/GUI/Plater.cpp:206 src/slic3r/GUI/Plater.cpp:998
 msgid "Used Filament (m)"
-msgstr "Used Filament (m)"
+msgstr "Filament Utilisé (m)"
+
+#: src/slic3r/GUI/Plater.cpp:207
+msgid "Used Filament (mm³)"
+msgstr "Filament Utilisé (mm³)"
 
 #: src/slic3r/GUI/Plater.cpp:208
-msgid "Used Filament (mm³)"
-msgstr "Used Filament (mm³)"
+msgid "Used Filament (g)"
+msgstr "Filament Utilisé (g)"
 
 #: src/slic3r/GUI/Plater.cpp:209
-msgid "Used Filament (g)"
-msgstr "Used Filament (g)"
-
-#: src/slic3r/GUI/Plater.cpp:210
 msgid "Used Material (unit)"
-msgstr "Used Material (unit)"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:211 src/slic3r/GUI/Plater.cpp:1013
+#: src/slic3r/GUI/Plater.cpp:210 src/slic3r/GUI/Plater.cpp:1013
 #: src/libslic3r/PrintConfig.cpp:716
 msgid "Cost"
-msgstr "Cost"
+msgstr "Coût"
 
-#: src/slic3r/GUI/Plater.cpp:212 src/slic3r/GUI/Plater.cpp:985
+#: src/slic3r/GUI/Plater.cpp:211 src/slic3r/GUI/Plater.cpp:985
 #: src/slic3r/GUI/Plater.cpp:1027
 msgid "Estimated printing time"
-msgstr "Estimated printing time"
+msgstr "Temps d'impression estimé"
 
-#: src/slic3r/GUI/Plater.cpp:213
+#: src/slic3r/GUI/Plater.cpp:212
 msgid "Number of tool changes"
-msgstr "Number of tool changes"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:290
+#: src/slic3r/GUI/Plater.cpp:289
 msgid "Click to edit preset"
-msgstr "Click to edit preset"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:413
+#: src/slic3r/GUI/Plater.cpp:412
 msgid "Select what kind of support do you need"
-msgstr "Select what kind of support do you need"
+msgstr "Choisissez le type de support dont vous avez besoin"
 
-#: src/slic3r/GUI/Plater.cpp:415 src/libslic3r/PrintConfig.cpp:1814
-#: src/libslic3r/PrintConfig.cpp:2419
+#: src/slic3r/GUI/Plater.cpp:414 src/libslic3r/PrintConfig.cpp:1814
+#: src/libslic3r/PrintConfig.cpp:2421
 msgid "Support on build plate only"
-msgstr "Support on build plate only"
+msgstr "Support sur le plateau uniquement"
 
-#: src/slic3r/GUI/Plater.cpp:416
+#: src/slic3r/GUI/Plater.cpp:415
 msgid "Everywhere"
-msgstr "Everywhere"
+msgstr "Partout"
 
-#: src/slic3r/GUI/Plater.cpp:438 src/slic3r/GUI/Tab.cpp:1007
+#: src/slic3r/GUI/Plater.cpp:437 src/slic3r/GUI/Tab.cpp:1007
 msgid "Brim"
-msgstr "Brim"
+msgstr "Bordure"
 
-#: src/slic3r/GUI/Plater.cpp:440
+#: src/slic3r/GUI/Plater.cpp:439
 msgid ""
 "This flag enables the brim that will be printed around each object on the "
 "first layer."
 msgstr ""
-"This flag enables the brim that will be printed around each object on the "
-"first layer."
+"Cette option permet l'impression de la bordure qui entoure chaque objet lors "
+"de la première couche."
 
-#: src/slic3r/GUI/Plater.cpp:448
+#: src/slic3r/GUI/Plater.cpp:447
 msgid "Purging volumes"
-msgstr "Purging volumes"
+msgstr "Volumes de purge"
 
-#: src/slic3r/GUI/Plater.cpp:673
+#: src/slic3r/GUI/Plater.cpp:672
 msgid "Print settings"
-msgstr "Print settings"
+msgstr "Réglages d'impression"
 
-#: src/slic3r/GUI/Plater.cpp:674 src/slic3r/GUI/Tab.cpp:1421
+#: src/slic3r/GUI/Plater.cpp:673 src/slic3r/GUI/Tab.cpp:1421
 #: src/slic3r/GUI/Tab.cpp:1422
 msgid "Filament"
 msgstr "Filament"
 
-#: src/slic3r/GUI/Plater.cpp:675 src/slic3r/GUI/Preset.cpp:1252
+#: src/slic3r/GUI/Plater.cpp:674 src/slic3r/GUI/Preset.cpp:1254
 msgid "SLA print"
-msgstr "SLA print"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:676 src/slic3r/GUI/Preset.cpp:1253
+#: src/slic3r/GUI/Plater.cpp:675 src/slic3r/GUI/Preset.cpp:1255
 msgid "SLA material"
-msgstr "SLA material"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:677
+#: src/slic3r/GUI/Plater.cpp:676
 msgid "Printer"
-msgstr "Printer"
+msgstr "Imprimante"
 
-#: src/slic3r/GUI/Plater.cpp:707 src/slic3r/GUI/Plater.cpp:3674
+#: src/slic3r/GUI/Plater.cpp:706 src/slic3r/GUI/Plater.cpp:3705
 msgid "Send to printer"
-msgstr "Send to printer"
+msgstr "Envoyer à l'imprimante"
 
-#: src/slic3r/GUI/Plater.cpp:727 src/slic3r/GUI/Plater.cpp:2352
-#: src/slic3r/GUI/Plater.cpp:3470
+#: src/slic3r/GUI/Plater.cpp:726 src/slic3r/GUI/Plater.cpp:2368
+#: src/slic3r/GUI/Plater.cpp:3501
 msgid "Slice now"
-msgstr "Slice now"
+msgstr "Découper maintenant"
 
 #: src/slic3r/GUI/Plater.cpp:860
 msgid "Hold Shift to Slice & Export G-code"
-msgstr "Hold Shift to Slice & Export G-code"
+msgstr ""
 
 #: src/slic3r/GUI/Plater.cpp:931
 #, c-format
 msgid "%d (%d shells)"
-msgstr "%d (%d shells)"
+msgstr "%d (%d coques)"
 
 #: src/slic3r/GUI/Plater.cpp:936
 #, c-format
 msgid "Auto-repaired (%d errors)"
-msgstr "Auto-repaired (%d errors)"
+msgstr "Réparé automatiquement (%d erreurs)"
 
 #: src/slic3r/GUI/Plater.cpp:939
 #, c-format
@@ -2409,398 +2438,401 @@ msgid ""
 "%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d "
 "facets reversed, %d backwards edges"
 msgstr ""
-"%d degenerate facets, %d edges fixed, %d facets removed, %d facets added, %d "
-"facets reversed, %d backwards edges"
+"%d faces invalides, %d arrêtes corrigées, %d faces retirées, %d faces "
+"ajoutées, %d faces inversées, %d arrêtes à l'envers"
 
 #: src/slic3r/GUI/Plater.cpp:949
 msgid "Yes"
-msgstr "Yes"
+msgstr "Oui"
 
 #: src/slic3r/GUI/Plater.cpp:972
 msgid "Used Material (ml)"
-msgstr "Used Material (ml)"
+msgstr ""
 
 #: src/slic3r/GUI/Plater.cpp:975
 msgid "object(s)"
-msgstr "object(s)"
+msgstr ""
 
 #: src/slic3r/GUI/Plater.cpp:975
 msgid "supports and pad"
-msgstr "supports and pad"
+msgstr ""
 
 #: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015
 msgid "objects"
-msgstr "objects"
+msgstr ""
 
 #: src/slic3r/GUI/Plater.cpp:1000 src/slic3r/GUI/Plater.cpp:1015
 msgid "wipe tower"
-msgstr "wipe tower"
+msgstr ""
 
 #: src/slic3r/GUI/Plater.cpp:1030
 msgid "normal mode"
-msgstr "normal mode"
+msgstr ""
 
 #: src/slic3r/GUI/Plater.cpp:1034
 msgid "silent mode"
-msgstr "silent mode"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1544
+#: src/slic3r/GUI/Plater.cpp:1546
 msgid "Loading"
-msgstr "Loading"
+msgstr "Chargement"
 
-#: src/slic3r/GUI/Plater.cpp:1554
+#: src/slic3r/GUI/Plater.cpp:1556
 #, c-format
 msgid "Processing input file %s\n"
-msgstr "Processing input file %s\n"
+msgstr "Traitement du fichier d'entrée %s\n"
 
-#: src/slic3r/GUI/Plater.cpp:1612
+#: src/slic3r/GUI/Plater.cpp:1614
 msgid ""
 "This file contains several objects positioned at multiple heights. Instead "
 "of considering them as multiple objects, should I consider\n"
 "this file as a single object having multiple parts?\n"
 msgstr ""
-"This file contains several objects positioned at multiple heights. Instead "
-"of considering them as multiple objects, should I consider\n"
-"this file as a single object having multiple parts?\n"
+"Ce fichier contient plusieurs objets positionnés à différentes hauteurs. Au "
+"lieu de les considérer comme des objets distincts, voulez-vous que je "
+"considère\n"
+"ce fichier comme un seul objet en plusieurs parties?\n"
 
-#: src/slic3r/GUI/Plater.cpp:1615 src/slic3r/GUI/Plater.cpp:1707
+#: src/slic3r/GUI/Plater.cpp:1617 src/slic3r/GUI/Plater.cpp:1725
 msgid "Multi-part object detected"
-msgstr "Multi-part object detected"
+msgstr "Objet multi-pièces détecté"
 
-#: src/slic3r/GUI/Plater.cpp:1650
+#: src/slic3r/GUI/Plater.cpp:1668
 msgid ""
-"This file cannot be loaded in simple mode. Do you want to switch to expert "
-"mode?\n"
+"This file cannot be loaded in a simple mode. Do you want to switch to an "
+"advanced mode?\n"
 msgstr ""
-"This file cannot be loaded in simple mode. Do you want to switch to expert "
-"mode?\n"
 
-#: src/slic3r/GUI/Plater.cpp:1651
+#: src/slic3r/GUI/Plater.cpp:1669
 msgid "Detected advanced data"
-msgstr "Detected advanced data"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1684
+#: src/slic3r/GUI/Plater.cpp:1702
 #, c-format
 msgid ""
 "You can't to add the object(s) from %s because of one or some of them "
 "is(are) multi-part"
 msgstr ""
-"You can't to add the object(s) from %s because of one or some of them "
-"is(are) multi-part"
 
-#: src/slic3r/GUI/Plater.cpp:1704
+#: src/slic3r/GUI/Plater.cpp:1722
 msgid ""
 "Multiple objects were loaded for a multi-material printer.\n"
 "Instead of considering them as multiple objects, should I consider\n"
 "these files to represent a single object having multiple parts?\n"
 msgstr ""
-"Multiple objects were loaded for a multi-material printer.\n"
-"Instead of considering them as multiple objects, should I consider\n"
-"these files to represent a single object having multiple parts?\n"
+"Plusieurs objets ont été chargés pour une imprimante multi-matériaux.\n"
+"Au lieu de les considérer comme plusieurs objets, dois-je considérer\n"
+"ces fichiers comment représentant un objets ayant plusieurs pièces ?\n"
 
-#: src/slic3r/GUI/Plater.cpp:1720
+#: src/slic3r/GUI/Plater.cpp:1738
 msgid "Loaded"
-msgstr "Loaded"
+msgstr "Chargé"
 
-#: src/slic3r/GUI/Plater.cpp:1812
+#: src/slic3r/GUI/Plater.cpp:1830
 msgid ""
 "Your object appears to be too large, so it was automatically scaled down to "
 "fit your print bed."
 msgstr ""
-"Your object appears to be too large, so it was automatically scaled down to "
-"fit your print bed."
+"Votre objet semble être trop grand, il a donc été automatiquement réduit "
+"afin de l'adapter à votre plateau d'impression."
 
-#: src/slic3r/GUI/Plater.cpp:1813
+#: src/slic3r/GUI/Plater.cpp:1831
 msgid "Object too large?"
-msgstr "Object too large?"
+msgstr "Objet trop grand ?"
 
-#: src/slic3r/GUI/Plater.cpp:1863
+#: src/slic3r/GUI/Plater.cpp:1881
 msgid "Export STL file:"
-msgstr "Export STL file:"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1870
+#: src/slic3r/GUI/Plater.cpp:1888
 msgid "Export AMF file:"
-msgstr "Export AMF file:"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:1876
+#: src/slic3r/GUI/Plater.cpp:1894
 msgid "Save file as:"
-msgstr "Save file as:"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2042
+#: src/slic3r/GUI/Plater.cpp:2059
 msgid "Arranging canceled"
-msgstr "Arranging canceled"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2045
+#: src/slic3r/GUI/Plater.cpp:2062
 msgid "Arranging"
-msgstr "Arranging"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2079
+#: src/slic3r/GUI/Plater.cpp:2096
 msgid "Could not arrange model objects! Some geometries may be invalid."
-msgstr "Could not arrange model objects! Some geometries may be invalid."
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2083
+#: src/slic3r/GUI/Plater.cpp:2100
 msgid "Arranging done."
-msgstr "Arranging done."
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2124
+#: src/slic3r/GUI/Plater.cpp:2141
 msgid "Orientation search canceled"
-msgstr "Orientation search canceled"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2129
+#: src/slic3r/GUI/Plater.cpp:2146
 msgid "Searching for optimal orientation"
-msgstr "Searching for optimal orientation"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2190
+#: src/slic3r/GUI/Plater.cpp:2207
 msgid "Orientation found."
-msgstr "Orientation found."
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2211
+#: src/slic3r/GUI/Plater.cpp:2227
 msgid ""
 "The selected object can't be split because it contains more than one volume/"
 "material."
 msgstr ""
-"The selected object can't be split because it contains more than one volume/"
-"material."
+"L'objet sélectionné ne peut être scindé car il contient plus d'un volume/"
+"matériau."
 
-#: src/slic3r/GUI/Plater.cpp:2337
+#: src/slic3r/GUI/Plater.cpp:2353
 msgid "Invalid data"
-msgstr "Invalid data"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2346
+#: src/slic3r/GUI/Plater.cpp:2362
 msgid "Ready to slice"
-msgstr "Ready to slice"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2379 src/slic3r/GUI/PrintHostDialogs.cpp:220
+#: src/slic3r/GUI/Plater.cpp:2400 src/slic3r/GUI/PrintHostDialogs.cpp:220
 msgid "Cancelling"
-msgstr "Cancelling"
+msgstr "Annulation"
 
-#: src/slic3r/GUI/Plater.cpp:2396
+#: src/slic3r/GUI/Plater.cpp:2417
 msgid "Another export job is currently running."
-msgstr "Another export job is currently running."
+msgstr "Une autre tâche d'export est actuellement en cours."
 
-#: src/slic3r/GUI/Plater.cpp:2656
+#: src/slic3r/GUI/Plater.cpp:2678
 msgid "Export failed"
-msgstr "Export failed"
+msgstr "L'export a échoué"
 
-#: src/slic3r/GUI/Plater.cpp:2661 src/slic3r/GUI/PrintHostDialogs.cpp:221
+#: src/slic3r/GUI/Plater.cpp:2683 src/slic3r/GUI/PrintHostDialogs.cpp:221
 msgid "Cancelled"
-msgstr "Cancelled"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2747 src/slic3r/GUI/Plater.cpp:2759
-#: src/slic3r/GUI/Plater.cpp:2831
+#: src/slic3r/GUI/Plater.cpp:2769 src/slic3r/GUI/Plater.cpp:2781
+#: src/slic3r/GUI/Plater.cpp:2853
 msgid "Increase copies"
-msgstr "Increase copies"
+msgstr "Augmenter les copies"
 
-#: src/slic3r/GUI/Plater.cpp:2825 src/slic3r/GUI/Plater.cpp:2843
+#: src/slic3r/GUI/Plater.cpp:2847 src/slic3r/GUI/Plater.cpp:2865
 msgid "Remove the selected object"
-msgstr "Remove the selected object"
+msgstr "Retirer l'objet sélectionné"
 
-#: src/slic3r/GUI/Plater.cpp:2831
+#: src/slic3r/GUI/Plater.cpp:2853
 msgid "Place one more copy of the selected object"
-msgstr "Place one more copy of the selected object"
+msgstr "Placer une copie supplémentaire de l'objet sélectionné"
 
-#: src/slic3r/GUI/Plater.cpp:2833
+#: src/slic3r/GUI/Plater.cpp:2855
 msgid "Decrease copies"
-msgstr "Decrease copies"
+msgstr "Réduire les copies"
 
-#: src/slic3r/GUI/Plater.cpp:2833
+#: src/slic3r/GUI/Plater.cpp:2855
 msgid "Remove one copy of the selected object"
-msgstr "Remove one copy of the selected object"
+msgstr "Retirer une copie de l'objet sélectionné"
 
-#: src/slic3r/GUI/Plater.cpp:2835
+#: src/slic3r/GUI/Plater.cpp:2857
 msgid "Set number of copies"
-msgstr "Set number of copies"
+msgstr "Choisir le nombre de copies"
 
-#: src/slic3r/GUI/Plater.cpp:2835
+#: src/slic3r/GUI/Plater.cpp:2857
 msgid "Change the number of copies of the selected object"
-msgstr "Change the number of copies of the selected object"
+msgstr "Changer le nombre de copies de l'objet sélectionné"
 
-#: src/slic3r/GUI/Plater.cpp:2858
+#: src/slic3r/GUI/Plater.cpp:2880
 msgid "Reload from Disk"
-msgstr "Reload from Disk"
+msgstr "Recharger depuis le Disque"
 
-#: src/slic3r/GUI/Plater.cpp:2858
+#: src/slic3r/GUI/Plater.cpp:2880
 msgid "Reload the selected file from Disk"
-msgstr "Reload the selected file from Disk"
+msgstr "Recharger le fichier sélectionné depuis le Disque"
 
-#: src/slic3r/GUI/Plater.cpp:2861
+#: src/slic3r/GUI/Plater.cpp:2883
 msgid "Export the selected object as STL file"
-msgstr "Export the selected object as STL file"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2873
+#: src/slic3r/GUI/Plater.cpp:2895
 msgid "Along X axis"
-msgstr "Along X axis"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2873
+#: src/slic3r/GUI/Plater.cpp:2895
 msgid "Mirror the selected object along the X axis"
-msgstr "Mirror the selected object along the X axis"
+msgstr "Symétriser l'objet sélectionné selon l'axe X"
 
-#: src/slic3r/GUI/Plater.cpp:2875
+#: src/slic3r/GUI/Plater.cpp:2897
 msgid "Along Y axis"
-msgstr "Along Y axis"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2875
+#: src/slic3r/GUI/Plater.cpp:2897
 msgid "Mirror the selected object along the Y axis"
-msgstr "Mirror the selected object along the Y axis"
+msgstr "Symétriser l'objet sélectionné selon l'axe Y"
 
-#: src/slic3r/GUI/Plater.cpp:2877
+#: src/slic3r/GUI/Plater.cpp:2899
 msgid "Along Z axis"
-msgstr "Along Z axis"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2877
+#: src/slic3r/GUI/Plater.cpp:2899
 msgid "Mirror the selected object along the Z axis"
-msgstr "Mirror the selected object along the Z axis"
+msgstr "Symétriser l'objet sélectionné selon l'axe Z"
 
-#: src/slic3r/GUI/Plater.cpp:2880
+#: src/slic3r/GUI/Plater.cpp:2902
 msgid "Mirror"
-msgstr "Mirror"
+msgstr "Symétrie"
 
-#: src/slic3r/GUI/Plater.cpp:2880
+#: src/slic3r/GUI/Plater.cpp:2902
 msgid "Mirror the selected object"
-msgstr "Mirror the selected object"
+msgstr "Symétriser l'objet sélectionné"
 
-#: src/slic3r/GUI/Plater.cpp:2898
+#: src/slic3r/GUI/Plater.cpp:2920
 msgid "To objects"
-msgstr "To objects"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2898 src/slic3r/GUI/Plater.cpp:2920
+#: src/slic3r/GUI/Plater.cpp:2920 src/slic3r/GUI/Plater.cpp:2942
 msgid "Split the selected object into individual objects"
-msgstr "Split the selected object into individual objects"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2900
+#: src/slic3r/GUI/Plater.cpp:2922
 msgid "To parts"
-msgstr "To parts"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2900 src/slic3r/GUI/Plater.cpp:2940
+#: src/slic3r/GUI/Plater.cpp:2922 src/slic3r/GUI/Plater.cpp:2962
 msgid "Split the selected object into individual sub-parts"
-msgstr "Split the selected object into individual sub-parts"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2903 src/slic3r/GUI/Plater.cpp:2920
-#: src/slic3r/GUI/Plater.cpp:2940 src/libslic3r/PrintConfig.cpp:3075
+#: src/slic3r/GUI/Plater.cpp:2925 src/slic3r/GUI/Plater.cpp:2942
+#: src/slic3r/GUI/Plater.cpp:2962 src/libslic3r/PrintConfig.cpp:3080
 msgid "Split"
-msgstr "Split"
+msgstr "Scinder"
 
-#: src/slic3r/GUI/Plater.cpp:2903
+#: src/slic3r/GUI/Plater.cpp:2925
 msgid "Split the selected object"
-msgstr "Split the selected object"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2926
+#: src/slic3r/GUI/Plater.cpp:2948
 msgid "Optimize orientation"
-msgstr "Optimize orientation"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:2926
+#: src/slic3r/GUI/Plater.cpp:2948
 msgid "Optimize the rotation of the object for better print results."
-msgstr "Optimize the rotation of the object for better print results."
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:3342
+#: src/slic3r/GUI/Plater.cpp:3373
 msgid "Save G-code file as:"
-msgstr "Save G-code file as:"
+msgstr "Sauvegarder le fichier G-code en tant que :"
 
-#: src/slic3r/GUI/Plater.cpp:3342
+#: src/slic3r/GUI/Plater.cpp:3373
 msgid "Save SL1 file as:"
-msgstr "Save SL1 file as:"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:3397
+#: src/slic3r/GUI/Plater.cpp:3428
 #, c-format
 msgid "STL file exported to %s"
-msgstr "STL file exported to %s"
+msgstr "Fichier STL exporté vers %s"
 
-#: src/slic3r/GUI/Plater.cpp:3413
+#: src/slic3r/GUI/Plater.cpp:3444
 #, c-format
 msgid "AMF file exported to %s"
-msgstr "AMF file exported to %s"
+msgstr "Fichier AMF exporté vers %s"
 
-#: src/slic3r/GUI/Plater.cpp:3416
+#: src/slic3r/GUI/Plater.cpp:3447
 #, c-format
 msgid "Error exporting AMF file %s"
-msgstr "Error exporting AMF file %s"
+msgstr "Erreur d'export du fichier AMF %s"
 
-#: src/slic3r/GUI/Plater.cpp:3442
+#: src/slic3r/GUI/Plater.cpp:3473
 #, c-format
 msgid "3MF file exported to %s"
-msgstr "3MF file exported to %s"
+msgstr "Fichier 3MF exporté vers %s"
 
-#: src/slic3r/GUI/Plater.cpp:3445
+#: src/slic3r/GUI/Plater.cpp:3476
 #, c-format
 msgid "Error exporting 3MF file %s"
-msgstr "Error exporting 3MF file %s"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:3673
+#: src/slic3r/GUI/Plater.cpp:3704
 msgid "Export"
-msgstr "Export"
+msgstr ""
 
-#: src/slic3r/GUI/Plater.cpp:3674
+#: src/slic3r/GUI/Plater.cpp:3705
 msgid "Send G-code"
-msgstr "Send G-code"
+msgstr ""
 
 #: src/slic3r/GUI/Preferences.cpp:17 src/slic3r/GUI/Tab.cpp:1762
 #: src/slic3r/GUI/Tab.cpp:1963
 msgid "General"
-msgstr "General"
+msgstr "Général"
 
 #: src/slic3r/GUI/Preferences.cpp:34
 msgid "Remember output directory"
-msgstr "Remember output directory"
+msgstr "Se souvenir du répertoire de sortie"
 
 #: src/slic3r/GUI/Preferences.cpp:36
 msgid ""
 "If this is enabled, Slic3r will prompt the last output directory instead of "
 "the one containing the input files."
 msgstr ""
-"If this is enabled, Slic3r will prompt the last output directory instead of "
-"the one containing the input files."
+"Si ceci est activé, Slic3r affichera le dernier répertoire de sortie au lieu "
+"de celui contenant les fichiers d'entrée."
 
 #: src/slic3r/GUI/Preferences.cpp:42
 msgid "Auto-center parts"
-msgstr "Auto-center parts"
+msgstr "Centrer automatiquement les pièces"
 
 #: src/slic3r/GUI/Preferences.cpp:44
 msgid ""
 "If this is enabled, Slic3r will auto-center objects around the print bed "
 "center."
 msgstr ""
-"If this is enabled, Slic3r will auto-center objects around the print bed "
-"center."
+"Si ceci est activé, Slic3r centrera automatique les objets autour du centre "
+"du plateau d'impression."
 
 #: src/slic3r/GUI/Preferences.cpp:50
 msgid "Background processing"
-msgstr "Background processing"
+msgstr "Tâche en arrière plan"
 
 #: src/slic3r/GUI/Preferences.cpp:52
 msgid ""
 "If this is enabled, Slic3r will pre-process objects as soon as they're "
 "loaded in order to save time when exporting G-code."
 msgstr ""
-"If this is enabled, Slic3r will pre-process objects as soon as they're "
-"loaded in order to save time when exporting G-code."
+"Si ceci est activé, Slic3r va pré-calculer les objets dès qu'ils sont "
+"chargés pour gagner du temps lors de l'export du G-code."
+
+#: src/slic3r/GUI/Preferences.cpp:61
+msgid "If enabled, Slic3r checks for new versions of "
+msgstr ""
 
 #: src/slic3r/GUI/Preferences.cpp:74
 msgid "Suppress \" - default - \" presets"
-msgstr "Suppress \" - default - \" presets"
+msgstr "Supprimer les préréglages \" - par défaut - \""
 
 #: src/slic3r/GUI/Preferences.cpp:76
 msgid ""
 "Suppress \" - default - \" presets in the Print / Filament / Printer "
 "selections once there are any other valid presets available."
 msgstr ""
-"Suppress \" - default - \" presets in the Print / Filament / Printer "
-"selections once there are any other valid presets available."
+"Supprimer les préréglages \" - par défaut - \" dans les choix Impression / "
+"Filament / Imprimante une fois qu'il y a d'autres préréglages valides "
+"disponibles."
 
 #: src/slic3r/GUI/Preferences.cpp:82
 msgid "Show incompatible print and filament presets"
-msgstr "Show incompatible print and filament presets"
+msgstr "Afficher les préréglages d'impression et de filament incompatibles"
 
 #: src/slic3r/GUI/Preferences.cpp:84
 msgid ""
 "When checked, the print and filament presets are shown in the preset editor "
 "even if they are marked as incompatible with the active printer"
 msgstr ""
-"When checked, the print and filament presets are shown in the preset editor "
-"even if they are marked as incompatible with the active printer"
+"Lorsqu'ils sont sélectionnés, les préréglages de l'imprimante et du filament "
+"sont visibles dans l'éditeur de préréglage même s'ils sont désignés comme "
+"incompatibles avec l'imprimante en cours d'utilisation"
 
 #: src/slic3r/GUI/Preferences.cpp:91
 msgid "Use legacy OpenGL 1.1 rendering"
-msgstr "Use legacy OpenGL 1.1 rendering"
+msgstr "Utiliser le rendu de legacy OpenGL 1.1"
 
 #: src/slic3r/GUI/Preferences.cpp:93
 msgid ""
@@ -2808,48 +2840,48 @@ msgid ""
 "try to check this checkbox. This will disable the layer height editing and "
 "anti aliasing, so it is likely better to upgrade your graphics driver."
 msgstr ""
-"If you have rendering issues caused by a buggy OpenGL 2.0 driver, you may "
-"try to check this checkbox. This will disable the layer height editing and "
-"anti aliasing, so it is likely better to upgrade your graphics driver."
+"Si vous avez des soucis de rendu causés par un driver OpenGL 2.0 bogué, vous "
+"pouvez essayer de cocher cette case. Ceci désactivera l'édition de la "
+"hauteur de couche et l'anti-aliasing, vous avez donc intérêt à mettre à jour "
+"vos drivers graphiques."
 
 #: src/slic3r/GUI/Preferences.cpp:101
 msgid "Use Retina resolution for the 3D scene"
-msgstr "Use Retina resolution for the 3D scene"
+msgstr ""
 
 #: src/slic3r/GUI/Preferences.cpp:103
 msgid ""
 "If enabled, the 3D scene will be rendered in Retina resolution. If you are "
 "experiencing 3D performance problems, disabling this option may help."
 msgstr ""
-"If enabled, the 3D scene will be rendered in Retina resolution. If you are "
-"experiencing 3D performance problems, disabling this option may help."
 
 #: src/slic3r/GUI/Preferences.cpp:126
 msgid "You need to restart Slic3r to make the changes effective."
-msgstr "You need to restart Slic3r to make the changes effective."
+msgstr ""
+"Vous devez redémarrer Slic3r afin que les modifications soient appliquées."
 
 #: src/slic3r/GUI/Preset.cpp:207
 msgid "modified"
-msgstr "modified"
+msgstr ""
 
-#: src/slic3r/GUI/Preset.cpp:918 src/slic3r/GUI/Preset.cpp:958
-#: src/slic3r/GUI/Preset.cpp:1011 src/slic3r/GUI/Preset.cpp:1043
-#: src/slic3r/GUI/PresetBundle.cpp:1484 src/slic3r/GUI/PresetBundle.cpp:1537
+#: src/slic3r/GUI/Preset.cpp:920 src/slic3r/GUI/Preset.cpp:960
+#: src/slic3r/GUI/Preset.cpp:1013 src/slic3r/GUI/Preset.cpp:1045
+#: src/slic3r/GUI/PresetBundle.cpp:1470 src/slic3r/GUI/PresetBundle.cpp:1523
 msgid "System presets"
-msgstr "System presets"
+msgstr "Préréglages système"
 
-#: src/slic3r/GUI/Preset.cpp:962 src/slic3r/GUI/Preset.cpp:1047
-#: src/slic3r/GUI/PresetBundle.cpp:1542
+#: src/slic3r/GUI/Preset.cpp:964 src/slic3r/GUI/Preset.cpp:1049
+#: src/slic3r/GUI/PresetBundle.cpp:1528
 msgid "User presets"
-msgstr "User presets"
+msgstr "Préréglages utilisateur"
 
-#: src/slic3r/GUI/Preset.cpp:991 src/slic3r/GUI/Tab.cpp:247
+#: src/slic3r/GUI/Preset.cpp:993 src/slic3r/GUI/Tab.cpp:247
 msgid "Add a new printer"
-msgstr "Add a new printer"
+msgstr ""
 
-#: src/slic3r/GUI/Preset.cpp:1251
+#: src/slic3r/GUI/Preset.cpp:1253
 msgid "filament"
-msgstr "filament"
+msgstr ""
 
 #: src/slic3r/GUI/PresetHints.cpp:28
 #, c-format
@@ -2858,9 +2890,10 @@ msgid ""
 "will be reduced so that no less than %ds are spent on that layer (however, "
 "speed will never be reduced below %dmm/s)."
 msgstr ""
-"If estimated layer time is below ~%ds, fan will run at %d%% and print speed "
-"will be reduced so that no less than %ds are spent on that layer (however, "
-"speed will never be reduced below %dmm/s)."
+"Si le temps de couche estimé est inférieur à ~%d s, le ventilateur tournera "
+"à %d%% et la vitesse d'impression sera réduite pour qu'au moins %d s soient "
+"passées sur cette couche (cependant, la vitesse ne sera jamais réduite en-"
+"dessous de %d mm/s)."
 
 #: src/slic3r/GUI/PresetHints.cpp:32
 #, c-format
@@ -2870,8 +2903,9 @@ msgid ""
 "proportionally decreasing speed between %d%% and %d%%."
 msgstr ""
 "\n"
-"If estimated layer time is greater, but still below ~%ds, fan will run at a "
-"proportionally decreasing speed between %d%% and %d%%."
+"Si le temps estimé pour la couche est supérieur, mais cependant inférieur à ~"
+"%ds, le ventilateur tournera à une vitesse proportionnellement décroissante "
+"entre %d%% et %d%%."
 
 #: src/slic3r/GUI/PresetHints.cpp:36
 msgid ""
@@ -2879,49 +2913,49 @@ msgid ""
 "During the other layers, fan "
 msgstr ""
 "\n"
-"During the other layers, fan "
+"Pendant les autres couches, le ventilateur "
 
 #: src/slic3r/GUI/PresetHints.cpp:38
 msgid "Fan "
-msgstr "Fan "
+msgstr "Ventilateur "
 
 #: src/slic3r/GUI/PresetHints.cpp:43
 #, c-format
 msgid "will always run at %d%% "
-msgstr "will always run at %d%% "
+msgstr "fonctionnera toujours à %d%% "
 
 #: src/slic3r/GUI/PresetHints.cpp:46
 #, c-format
 msgid "except for the first %d layers"
-msgstr "except for the first %d layers"
+msgstr "sauf pour les %d première couches"
 
 #: src/slic3r/GUI/PresetHints.cpp:50
 msgid "except for the first layer"
-msgstr "except for the first layer"
+msgstr "sauf pour la première couche"
 
 #: src/slic3r/GUI/PresetHints.cpp:52
 msgid "will be turned off."
-msgstr "will be turned off."
+msgstr "sera désactivé."
 
 #: src/slic3r/GUI/PresetHints.cpp:153
 msgid "external perimeters"
-msgstr "external perimeters"
+msgstr "périmètres externes"
 
 #: src/slic3r/GUI/PresetHints.cpp:162
 msgid "perimeters"
-msgstr "perimeters"
+msgstr "périmètres"
 
 #: src/slic3r/GUI/PresetHints.cpp:171
 msgid "infill"
-msgstr "infill"
+msgstr "remplissage"
 
 #: src/slic3r/GUI/PresetHints.cpp:181
 msgid "solid infill"
-msgstr "solid infill"
+msgstr "remplissage solide"
 
 #: src/slic3r/GUI/PresetHints.cpp:189
 msgid "top solid infill"
-msgstr "top solid infill"
+msgstr "remplissage solide supérieur"
 
 #: src/slic3r/GUI/PresetHints.cpp:200
 msgid "support"
@@ -2929,35 +2963,35 @@ msgstr "support"
 
 #: src/slic3r/GUI/PresetHints.cpp:210
 msgid "support interface"
-msgstr "support interface"
+msgstr "interface du support"
 
 #: src/slic3r/GUI/PresetHints.cpp:216
 msgid "First layer volumetric"
-msgstr "First layer volumetric"
+msgstr "Volume de la première couche"
 
 #: src/slic3r/GUI/PresetHints.cpp:216
 msgid "Bridging volumetric"
-msgstr "Bridging volumetric"
+msgstr "Volumétrie des ponts"
 
 #: src/slic3r/GUI/PresetHints.cpp:216
 msgid "Volumetric"
-msgstr "Volumetric"
+msgstr "Volumétrique"
 
 #: src/slic3r/GUI/PresetHints.cpp:217
 msgid " flow rate is maximized "
-msgstr " flow rate is maximized "
+msgstr " le débit est maximisé "
 
 #: src/slic3r/GUI/PresetHints.cpp:220
 msgid "by the print profile maximum"
-msgstr "by the print profile maximum"
+msgstr "par le maximum du profil de l'imprimante"
 
 #: src/slic3r/GUI/PresetHints.cpp:221
 msgid "when printing "
-msgstr "when printing "
+msgstr "pendant l'impression des "
 
 #: src/slic3r/GUI/PresetHints.cpp:222
 msgid " with a volumetric rate "
-msgstr " with a volumetric rate "
+msgstr " avec un débit volumétrique "
 
 #: src/slic3r/GUI/PresetHints.cpp:226
 #, c-format
@@ -2967,299 +3001,302 @@ msgstr "%3.2f mm³/s"
 #: src/slic3r/GUI/PresetHints.cpp:228
 #, c-format
 msgid " at filament speed %3.2f mm/s."
-msgstr " at filament speed %3.2f mm/s."
+msgstr " à une vitesse de filament de %3.2f mm/s."
 
 #: src/slic3r/GUI/PresetHints.cpp:247
 msgid ""
 "Recommended object thin wall thickness: Not available due to invalid layer "
 "height."
 msgstr ""
-"Recommended object thin wall thickness: Not available due to invalid layer "
-"height."
+"Épaisseur des parois fines de l'objet recommandée : Non disponible car la "
+"hauteur de couche est invalide."
 
 #: src/slic3r/GUI/PresetHints.cpp:264
 #, c-format
 msgid "Recommended object thin wall thickness for layer height %.2f and "
-msgstr "Recommended object thin wall thickness for layer height %.2f and "
+msgstr ""
+"Épaisseur des parois fines de l'objet recommandée pour la hauteur de couche "
+"%.2f et "
 
 #: src/slic3r/GUI/PresetHints.cpp:271
 #, c-format
 msgid "%d lines: %.2lf mm"
-msgstr "%d lines: %.2lf mm"
+msgstr "%d lignes : %.2lf mm"
 
 #: src/slic3r/GUI/PrintHostDialogs.cpp:32
 msgid "Send G-Code to printer host"
-msgstr "Send G-Code to printer host"
+msgstr ""
 
 #: src/slic3r/GUI/PrintHostDialogs.cpp:32
 msgid "Upload to Printer Host with the following filename:"
-msgstr "Upload to Printer Host with the following filename:"
+msgstr ""
 
 #: src/slic3r/GUI/PrintHostDialogs.cpp:34
 msgid "Start printing after upload"
-msgstr "Start printing after upload"
+msgstr ""
 
 #: src/slic3r/GUI/PrintHostDialogs.cpp:41
 msgid "Use forward slashes ( / ) as a directory separator if needed."
-msgstr "Use forward slashes ( / ) as a directory separator if needed."
+msgstr ""
 
 #: src/slic3r/GUI/PrintHostDialogs.cpp:157
 msgid "Cancel selected"
-msgstr "Cancel selected"
+msgstr ""
 
 #: src/slic3r/GUI/PrintHostDialogs.cpp:159
 msgid "Show error message"
-msgstr "Show error message"
+msgstr ""
 
 #: src/slic3r/GUI/PrintHostDialogs.cpp:198
 #: src/slic3r/GUI/PrintHostDialogs.cpp:217
 msgid "Enqueued"
-msgstr "Enqueued"
+msgstr ""
 
 #: src/slic3r/GUI/PrintHostDialogs.cpp:218
 msgid "Uploading"
-msgstr "Uploading"
+msgstr ""
 
 #: src/slic3r/GUI/PrintHostDialogs.cpp:222
 msgid "Completed"
-msgstr "Completed"
+msgstr ""
 
 #: src/slic3r/GUI/PrintHostDialogs.cpp:260
 msgid "Error uploading to print host:"
-msgstr "Error uploading to print host:"
+msgstr ""
 
 #: src/slic3r/GUI/RammingChart.cpp:23
 msgid "NO RAMMING AT ALL"
-msgstr "NO RAMMING AT ALL"
+msgstr "PAS D'EXPULSION DU TOUT"
 
 #: src/slic3r/GUI/RammingChart.cpp:76
 msgid "Time"
-msgstr "Time"
+msgstr "Durée"
 
 #: src/slic3r/GUI/RammingChart.cpp:76 src/slic3r/GUI/RammingChart.cpp:81
 #: src/slic3r/GUI/WipeTowerDialog.cpp:82 src/libslic3r/PrintConfig.cpp:611
 #: src/libslic3r/PrintConfig.cpp:655 src/libslic3r/PrintConfig.cpp:670
 #: src/libslic3r/PrintConfig.cpp:2241 src/libslic3r/PrintConfig.cpp:2250
-#: src/libslic3r/PrintConfig.cpp:2308 src/libslic3r/PrintConfig.cpp:2315
+#: src/libslic3r/PrintConfig.cpp:2310 src/libslic3r/PrintConfig.cpp:2317
 msgid "s"
 msgstr "s"
 
 #: src/slic3r/GUI/RammingChart.cpp:81
 msgid "Volumetric speed"
-msgstr "Volumetric speed"
+msgstr "Vitesse volumétrique"
 
 #: src/slic3r/GUI/SysInfoDialog.cpp:44
-msgid "Slic3r Prusa Edition - System Information"
-msgstr "Slic3r Prusa Edition - System Information"
+msgid "System Information"
+msgstr ""
 
 #: src/slic3r/GUI/Tab.cpp:50 src/libslic3r/PrintConfig.cpp:228
 msgid "Compatible printers"
-msgstr "Compatible printers"
+msgstr "Imprimantes compatibles"
 
 #: src/slic3r/GUI/Tab.cpp:51
 msgid "Select the printers this profile is compatible with."
-msgstr "Select the printers this profile is compatible with."
+msgstr "Sélectionner les imprimantes avec lesquelles ce profil est compatible."
 
 #: src/slic3r/GUI/Tab.cpp:56 src/libslic3r/PrintConfig.cpp:243
 msgid "Compatible print profiles"
-msgstr "Compatible print profiles"
+msgstr ""
 
 #: src/slic3r/GUI/Tab.cpp:57
 msgid "Select the print profiles this profile is compatible with."
-msgstr "Select the print profiles this profile is compatible with."
+msgstr ""
 
 #: src/slic3r/GUI/Tab.cpp:132
 msgid "Save current "
-msgstr "Save current "
+msgstr "Enregistrer l'état actuel "
 
 #: src/slic3r/GUI/Tab.cpp:133
 msgid "Delete this preset"
-msgstr "Delete this preset"
+msgstr "Supprimer ce préréglage"
 
 #: src/slic3r/GUI/Tab.cpp:145
 msgid ""
 "Hover the cursor over buttons to find more information \n"
 "or click this button."
 msgstr ""
-"Hover the cursor over buttons to find more information \n"
-"or click this button."
+"Passez le curseur au dessus des boutons pour obtenir plus d'informations\n"
+"ou cliquez sur ce bouton."
 
 #: src/slic3r/GUI/Tab.cpp:858
 msgid "It's a default preset."
-msgstr "It's a default preset."
+msgstr "C'est un préréglage par défaut."
 
 #: src/slic3r/GUI/Tab.cpp:859
 msgid "It's a system preset."
-msgstr "It's a system preset."
+msgstr "C'est un préréglage système."
 
 #: src/slic3r/GUI/Tab.cpp:860
 msgid "Current preset is inherited from "
-msgstr "Current preset is inherited from "
+msgstr "Le préréglage en cours a hérité de "
 
 #: src/slic3r/GUI/Tab.cpp:865
 msgid "It can't be deleted or modified. "
-msgstr "It can't be deleted or modified. "
+msgstr "Il ne peut être supprimé ou modifié. "
 
 #: src/slic3r/GUI/Tab.cpp:866
 msgid ""
 "Any modifications should be saved as a new preset inherited from this one. "
 msgstr ""
-"Any modifications should be saved as a new preset inherited from this one. "
+"Toute modification doit être enregistrée comme un nouveau préréglage hérité "
+"de celui-ci. "
 
 #: src/slic3r/GUI/Tab.cpp:867
 msgid "To do that please specify a new name for the preset."
-msgstr "To do that please specify a new name for the preset."
+msgstr "Pour faire cela veuillez spécifier un nouveau nom pour le préréglage."
 
 #: src/slic3r/GUI/Tab.cpp:871
 msgid "Additional information:"
-msgstr "Additional information:"
+msgstr "Informations complémentaires :"
 
 #: src/slic3r/GUI/Tab.cpp:877
 msgid "printer model"
-msgstr "printer model"
+msgstr "modèle de l'imprimante"
 
 #: src/slic3r/GUI/Tab.cpp:885
 msgid "default print profile"
-msgstr "default print profile"
+msgstr "profil d'impression par défaut"
 
 #: src/slic3r/GUI/Tab.cpp:888
 msgid "default filament profile"
-msgstr "default filament profile"
+msgstr "profil du filament par défaut"
 
 #: src/slic3r/GUI/Tab.cpp:902
 msgid "default SLA material profile"
-msgstr "default SLA material profile"
+msgstr ""
 
 #: src/slic3r/GUI/Tab.cpp:906
 msgid "default SLA print profile"
-msgstr "default SLA print profile"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:3303
+#: src/slic3r/GUI/Tab.cpp:948 src/slic3r/GUI/Tab.cpp:3305
 msgid "Layers and perimeters"
-msgstr "Layers and perimeters"
+msgstr "Couches et périmètres"
 
 #: src/slic3r/GUI/Tab.cpp:949 src/libslic3r/PrintConfig.cpp:55
 msgid "Layer height"
-msgstr "Layer height"
+msgstr "Hauteur de couche"
 
 #: src/slic3r/GUI/Tab.cpp:953
 msgid "Vertical shells"
-msgstr "Vertical shells"
+msgstr "Parois verticales"
 
 #: src/slic3r/GUI/Tab.cpp:964
 msgid "Horizontal shells"
-msgstr "Horizontal shells"
+msgstr "Coques horizontales"
 
 #: src/slic3r/GUI/Tab.cpp:965 src/libslic3r/PrintConfig.cpp:1709
 msgid "Solid layers"
-msgstr "Solid layers"
+msgstr "Couches solides"
 
 #: src/slic3r/GUI/Tab.cpp:970
 msgid "Quality (slower slicing)"
-msgstr "Quality (slower slicing)"
+msgstr "Qualité (découpage plus lent)"
 
 #: src/slic3r/GUI/Tab.cpp:988
 msgid "Reducing printing time"
-msgstr "Reducing printing time"
+msgstr "Réduction du temps d'impression"
 
 #: src/slic3r/GUI/Tab.cpp:1000
 msgid "Skirt and brim"
-msgstr "Skirt and brim"
+msgstr "Jupe et bordure"
 
 #: src/slic3r/GUI/Tab.cpp:1017
 msgid "Raft"
-msgstr "Raft"
+msgstr "Radeau"
 
 #: src/slic3r/GUI/Tab.cpp:1021
 msgid "Options for support material and raft"
-msgstr "Options for support material and raft"
+msgstr "Options pour le matériau de support et le radeau"
 
 #: src/slic3r/GUI/Tab.cpp:1036
 msgid "Speed for print moves"
-msgstr "Speed for print moves"
+msgstr "Vitesse pour les déplacements d'impression"
 
 #: src/slic3r/GUI/Tab.cpp:1048
 msgid "Speed for non-print moves"
-msgstr "Speed for non-print moves"
+msgstr "Vitesse pour les déplacements sans impression"
 
 #: src/slic3r/GUI/Tab.cpp:1051
 msgid "Modifiers"
-msgstr "Modifiers"
+msgstr "Modificateurs"
 
 #: src/slic3r/GUI/Tab.cpp:1054
 msgid "Acceleration control (advanced)"
-msgstr "Acceleration control (advanced)"
+msgstr "Contrôle de l'accélération (avancé)"
 
 #: src/slic3r/GUI/Tab.cpp:1061
 msgid "Autospeed (advanced)"
-msgstr "Autospeed (advanced)"
+msgstr "Vitesse automatique (avancé)"
 
 #: src/slic3r/GUI/Tab.cpp:1069
 msgid "Multiple Extruders"
-msgstr "Multiple Extruders"
+msgstr "Extrudeurs Multiples"
 
 #: src/slic3r/GUI/Tab.cpp:1077
 msgid "Ooze prevention"
-msgstr "Ooze prevention"
+msgstr "Prévention des coulures"
 
 #: src/slic3r/GUI/Tab.cpp:1094
 msgid "Extrusion width"
-msgstr "Extrusion width"
+msgstr "Largeur d'extrusion"
 
 #: src/slic3r/GUI/Tab.cpp:1104
 msgid "Overlap"
-msgstr "Overlap"
+msgstr "Chevauchement"
 
 #: src/slic3r/GUI/Tab.cpp:1107
 msgid "Flow"
-msgstr "Flow"
+msgstr "Flux"
 
 #: src/slic3r/GUI/Tab.cpp:1116
 msgid "Other"
-msgstr "Other"
+msgstr "Autre"
 
-#: src/slic3r/GUI/Tab.cpp:1119 src/slic3r/GUI/Tab.cpp:3351
+#: src/slic3r/GUI/Tab.cpp:1119 src/slic3r/GUI/Tab.cpp:3353
 msgid "Output options"
-msgstr "Output options"
+msgstr "Options de sortie"
 
 #: src/slic3r/GUI/Tab.cpp:1120
 msgid "Sequential printing"
-msgstr "Sequential printing"
+msgstr "Impression séquentielle"
 
 #: src/slic3r/GUI/Tab.cpp:1122
 msgid "Extruder clearance (mm)"
-msgstr "Extruder clearance (mm)"
+msgstr "Dégagement de l'extrudeur (mm)"
 
-#: src/slic3r/GUI/Tab.cpp:1131 src/slic3r/GUI/Tab.cpp:3352
+#: src/slic3r/GUI/Tab.cpp:1131 src/slic3r/GUI/Tab.cpp:3354
 msgid "Output file"
-msgstr "Output file"
+msgstr "Fichier de sortie"
 
 #: src/slic3r/GUI/Tab.cpp:1138 src/libslic3r/PrintConfig.cpp:1382
 msgid "Post-processing scripts"
-msgstr "Post-processing scripts"
+msgstr "Scripts de post-traitement"
 
 #: src/slic3r/GUI/Tab.cpp:1144 src/slic3r/GUI/Tab.cpp:1145
 #: src/slic3r/GUI/Tab.cpp:1527 src/slic3r/GUI/Tab.cpp:1528
 #: src/slic3r/GUI/Tab.cpp:1935 src/slic3r/GUI/Tab.cpp:1936
-#: src/slic3r/GUI/Tab.cpp:2027 src/slic3r/GUI/Tab.cpp:2028
-#: src/slic3r/GUI/Tab.cpp:3240 src/slic3r/GUI/Tab.cpp:3241
+#: src/slic3r/GUI/Tab.cpp:2028 src/slic3r/GUI/Tab.cpp:2029
+#: src/slic3r/GUI/Tab.cpp:3242 src/slic3r/GUI/Tab.cpp:3243
 msgid "Notes"
 msgstr "Notes"
 
 #: src/slic3r/GUI/Tab.cpp:1151 src/slic3r/GUI/Tab.cpp:1535
-#: src/slic3r/GUI/Tab.cpp:1942 src/slic3r/GUI/Tab.cpp:2034
-#: src/slic3r/GUI/Tab.cpp:3248 src/slic3r/GUI/Tab.cpp:3357
+#: src/slic3r/GUI/Tab.cpp:1942 src/slic3r/GUI/Tab.cpp:2035
+#: src/slic3r/GUI/Tab.cpp:3250 src/slic3r/GUI/Tab.cpp:3359
 msgid "Dependencies"
-msgstr "Dependencies"
+msgstr "Dépendances"
 
 #: src/slic3r/GUI/Tab.cpp:1152 src/slic3r/GUI/Tab.cpp:1536
-#: src/slic3r/GUI/Tab.cpp:1943 src/slic3r/GUI/Tab.cpp:2035
-#: src/slic3r/GUI/Tab.cpp:3249 src/slic3r/GUI/Tab.cpp:3358
+#: src/slic3r/GUI/Tab.cpp:1943 src/slic3r/GUI/Tab.cpp:2036
+#: src/slic3r/GUI/Tab.cpp:3251 src/slic3r/GUI/Tab.cpp:3360
 msgid "Profile dependencies"
-msgstr "Profile dependencies"
+msgstr "Dépendances du profil"
 
 #: src/slic3r/GUI/Tab.cpp:1198
-#, no-c-format
+#, fuzzy, c-format
 msgid ""
 "The Spiral Vase mode requires:\n"
 "- one perimeter\n"
@@ -3270,18 +3307,18 @@ msgid ""
 "\n"
 "Shall I adjust those settings in order to enable Spiral Vase?"
 msgstr ""
-"The Spiral Vase mode requires:\n"
-"- one perimeter\n"
-"- no top solid layers\n"
-"- 0% fill density\n"
-"- no support material\n"
-"- no ensure_vertical_shell_thickness\n"
+"Le mode Vase Spiral requiert :\n"
+"-Un périmètre\n"
+"-Pas de couches solides supérieures\n"
+"-Une densité de remplissage de 0%\n"
+"-Pas de supports\n"
+"-Pas de ensure_vertical_shell_thickness\n"
 "\n"
-"Shall I adjust those settings in order to enable Spiral Vase?"
+"Voulez-vous que je modifie ces réglages afin d'activer le Vase Spirale?"
 
 #: src/slic3r/GUI/Tab.cpp:1205
 msgid "Spiral Vase"
-msgstr "Spiral Vase"
+msgstr "Vase Spiral"
 
 #: src/slic3r/GUI/Tab.cpp:1228
 msgid ""
@@ -3293,17 +3330,18 @@ msgid ""
 "\n"
 "Shall I adjust those settings in order to enable the Wipe Tower?"
 msgstr ""
-"The Wipe Tower currently supports the non-soluble supports only\n"
-"if they are printed with the current extruder without triggering a tool "
-"change.\n"
-"(both support_material_extruder and support_material_interface_extruder need "
-"to be set to 0).\n"
+"A l'heure actuelle la Tour de Nettoyage ne tolère les supports non-"
+"solubles \n"
+"que s'ils sont imprimés avec l'extrudeur en cours d'utilisation sans "
+"déclencher un changement d'outil.\n"
+"(support_material_extruder de même que support_material_interface_extruder "
+"doivent être réglés sur 0).\n"
 "\n"
-"Shall I adjust those settings in order to enable the Wipe Tower?"
+"Voulez-vous que je modifie ces réglages pour activer la Tour de Nettoyage ?"
 
 #: src/slic3r/GUI/Tab.cpp:1232 src/slic3r/GUI/Tab.cpp:1249
 msgid "Wipe Tower"
-msgstr "Wipe Tower"
+msgstr "Tour de Nettoyage"
 
 #: src/slic3r/GUI/Tab.cpp:1246
 msgid ""
@@ -3312,10 +3350,12 @@ msgid ""
 "\n"
 "Shall I synchronize support layers in order to enable the Wipe Tower?"
 msgstr ""
-"For the Wipe Tower to work with the soluble supports, the support layers\n"
-"need to be synchronized with the object layers.\n"
+"Pour que la tour de nettoyage fonctionne avec des supports solubles, les "
+"couches de support\n"
+"doivent être synchronisées avec les couches de l'objet.\n"
 "\n"
-"Shall I synchronize support layers in order to enable the Wipe Tower?"
+"Dois-je synchroniser les couches de support pour pouvoir activer la tour de "
+"nettoyage ?"
 
 #: src/slic3r/GUI/Tab.cpp:1264
 msgid ""
@@ -3324,92 +3364,97 @@ msgid ""
 "\n"
 "Shall I adjust those settings for supports?"
 msgstr ""
-"Supports work better, if the following feature is enabled:\n"
-"- Detect bridging perimeters\n"
+"Les supports sont plus efficaces, si la fonctionnalité suivante est "
+"activée :\n"
+"-Détection des périmètres de pont\n"
 "\n"
-"Shall I adjust those settings for supports?"
+"Voulez-vous que que je modifie les réglages des supports ?"
 
 #: src/slic3r/GUI/Tab.cpp:1267
 msgid "Support Generator"
-msgstr "Support Generator"
+msgstr "Générateur de Support"
 
+# Used in context: _("The ") + str_fill_pattern + _(" infill pattern is not supposed to work at 100% density.\n")
 #: src/slic3r/GUI/Tab.cpp:1309
 msgid "The "
-msgstr "The "
+msgstr ""
 
 #: src/slic3r/GUI/Tab.cpp:1309
-#, no-c-format
+#, fuzzy, c-format
 msgid ""
 " infill pattern is not supposed to work at 100% density.\n"
 "\n"
 "Shall I switch to rectilinear fill pattern?"
 msgstr ""
-" infill pattern is not supposed to work at 100% density.\n"
+" le motif de remplissage n'est pas supposé fonctionner à une densité de "
+"100%.\n"
 "\n"
-"Shall I switch to rectilinear fill pattern?"
+"Dois-je passer au motif de remplissage rectiligne ?"
 
 #: src/slic3r/GUI/Tab.cpp:1429
 msgid "Temperature "
-msgstr "Temperature "
+msgstr "Température "
 
 #: src/slic3r/GUI/Tab.cpp:1435
 msgid "Bed"
-msgstr "Bed"
+msgstr "Plateau"
 
 #: src/slic3r/GUI/Tab.cpp:1440
 msgid "Cooling"
-msgstr "Cooling"
+msgstr "Refroidissement"
 
 #: src/slic3r/GUI/Tab.cpp:1441 src/libslic3r/PrintConfig.cpp:1285
 #: src/libslic3r/PrintConfig.cpp:2097
 msgid "Enable"
-msgstr "Enable"
+msgstr "Activer"
 
 #: src/slic3r/GUI/Tab.cpp:1452
 msgid "Fan settings"
-msgstr "Fan settings"
+msgstr "Réglages du ventilateur"
 
 #: src/slic3r/GUI/Tab.cpp:1453
 msgid "Fan speed"
-msgstr "Fan speed"
+msgstr "Vitesse du ventilateur"
 
 #: src/slic3r/GUI/Tab.cpp:1461
 msgid "Cooling thresholds"
-msgstr "Cooling thresholds"
+msgstr "Seuils de refroidissement"
 
 #: src/slic3r/GUI/Tab.cpp:1467
 msgid "Filament properties"
-msgstr "Filament properties"
+msgstr "Propriétés du filament"
 
 #: src/slic3r/GUI/Tab.cpp:1471
 msgid "Print speed override"
-msgstr "Print speed override"
+msgstr "Contournement de la vitesse d'impression"
 
 #: src/slic3r/GUI/Tab.cpp:1481
 msgid "Toolchange parameters with single extruder MM printers"
-msgstr "Toolchange parameters with single extruder MM printers"
+msgstr ""
+"Paramètres de changement d'outil pour les imprimantes multi-matériaux mono-"
+"extrudeur"
 
 #: src/slic3r/GUI/Tab.cpp:1496
 msgid "Ramming settings"
-msgstr "Ramming settings"
+msgstr "Réglages de l'expulsion"
 
 #: src/slic3r/GUI/Tab.cpp:1514 src/slic3r/GUI/Tab.cpp:1898
 msgid "Custom G-code"
-msgstr "Custom G-code"
+msgstr "G-code personnalisé"
 
 #: src/slic3r/GUI/Tab.cpp:1515 src/slic3r/GUI/Tab.cpp:1899
 #: src/libslic3r/PrintConfig.cpp:1735 src/libslic3r/PrintConfig.cpp:1750
 msgid "Start G-code"
-msgstr "Start G-code"
+msgstr "G-code de début"
 
 #: src/slic3r/GUI/Tab.cpp:1521 src/slic3r/GUI/Tab.cpp:1905
 #: src/libslic3r/PrintConfig.cpp:358 src/libslic3r/PrintConfig.cpp:368
 msgid "End G-code"
-msgstr "End G-code"
+msgstr "G-code de fin"
 
 #: src/slic3r/GUI/Tab.cpp:1632 src/slic3r/GUI/Tab.cpp:1689
 msgid " Browse "
-msgstr " Browse "
+msgstr " Parcourir "
 
 #: src/slic3r/GUI/Tab.cpp:1651 src/slic3r/GUI/Tab.cpp:1838
 msgid "Test"
@@ -3417,27 +3462,28 @@ msgstr "Test"
 
 #: src/slic3r/GUI/Tab.cpp:1662
 msgid "Could not get a valid Printer Host reference"
-msgstr "Could not get a valid Printer Host reference"
+msgstr ""
 
 #: src/slic3r/GUI/Tab.cpp:1668 src/slic3r/GUI/Tab.cpp:1851
 msgid "Success!"
-msgstr "Success!"
+msgstr "Réussi !"
 
 #: src/slic3r/GUI/Tab.cpp:1683
 msgid ""
 "HTTPS CA file is optional. It is only needed if you use HTTPS with a self-"
 "signed certificate."
 msgstr ""
-"HTTPS CA file is optional. It is only needed if you use HTTPS with a self-"
-"signed certificate."
+"Le fichier HTTPS CA est optionnel. Il est uniquement requis si vous utilisez "
+"le HTTPS avec un certificat auto-signé."
 
 #: src/slic3r/GUI/Tab.cpp:1696
 msgid "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*"
-msgstr "Certificate files (*.crt, *.pem)|*.crt;*.pem|All files|*.*"
+msgstr ""
+"Fichiers de certificat (*.crt, *.pem)|*.crt;*.pem|Tous les fichiers|*.*"
 
 #: src/slic3r/GUI/Tab.cpp:1697
 msgid "Open CA certificate file"
-msgstr "Open CA certificate file"
+msgstr "Ouvrir le fichier de certificat CA"
 
 #: src/slic3r/GUI/Tab.cpp:1725
 msgid ""
@@ -3447,547 +3493,543 @@ msgid ""
 "\tTo use a custom CA file, please import your CA file into Certificate "
 "Store / Keychain."
 msgstr ""
-"HTTPS CA File:\n"
-"\tOn this system, Slic3r uses HTTPS certificates from the system Certificate "
-"Store or Keychain.\n"
-"\tTo use a custom CA file, please import your CA file into Certificate "
-"Store / Keychain."
 
 #: src/slic3r/GUI/Tab.cpp:1763 src/slic3r/GUI/Tab.cpp:1964
 msgid "Size and coordinates"
-msgstr "Size and coordinates"
+msgstr "Taille et coordonnées"
 
 #: src/slic3r/GUI/Tab.cpp:1767 src/slic3r/GUI/Tab.cpp:1968
-#: src/slic3r/GUI/Tab.cpp:2911
+#: src/slic3r/GUI/Tab.cpp:2912
 msgid " Set "
-msgstr " Set "
+msgstr " Appliquer "
 
 #: src/slic3r/GUI/Tab.cpp:1790
 msgid "Capabilities"
-msgstr "Capabilities"
+msgstr "Fonctionnalités"
 
 #: src/slic3r/GUI/Tab.cpp:1795
 msgid "Number of extruders of the printer."
-msgstr "Number of extruders of the printer."
+msgstr "Nombre d'extrudeurs de l'imprimante."
 
 #: src/slic3r/GUI/Tab.cpp:1823
 msgid "USB/Serial connection"
-msgstr "USB/Serial connection"
+msgstr "Port USB/Série"
 
 #: src/slic3r/GUI/Tab.cpp:1824 src/libslic3r/PrintConfig.cpp:1590
 msgid "Serial port"
-msgstr "Serial port"
+msgstr "Port série"
 
 #: src/slic3r/GUI/Tab.cpp:1829
 msgid "Rescan serial ports"
-msgstr "Rescan serial ports"
+msgstr "Rescanner les ports série"
 
 #: src/slic3r/GUI/Tab.cpp:1851
 msgid "Connection to printer works correctly."
-msgstr "Connection to printer works correctly."
+msgstr "La connexion avec l'imprimante fonctionne correctement."
 
 #: src/slic3r/GUI/Tab.cpp:1854
 msgid "Connection failed."
-msgstr "Connection failed."
+msgstr "La connexion a échoué."
 
-#: src/slic3r/GUI/Tab.cpp:1867 src/slic3r/GUI/Tab.cpp:2022
+#: src/slic3r/GUI/Tab.cpp:1867 src/slic3r/GUI/Tab.cpp:2023
 msgid "Print Host upload"
-msgstr "Print Host upload"
+msgstr ""
 
 #: src/slic3r/GUI/Tab.cpp:1911 src/libslic3r/PrintConfig.cpp:128
 msgid "Before layer change G-code"
-msgstr "Before layer change G-code"
+msgstr "G-Code avant changement de couche"
 
 #: src/slic3r/GUI/Tab.cpp:1917 src/libslic3r/PrintConfig.cpp:1030
 msgid "After layer change G-code"
-msgstr "After layer change G-code"
+msgstr "G-Code après changement de couche"
 
 #: src/slic3r/GUI/Tab.cpp:1923 src/libslic3r/PrintConfig.cpp:2005
 msgid "Tool change G-code"
-msgstr "Tool change G-code"
+msgstr "G-code de changement d'outil"
 
 #: src/slic3r/GUI/Tab.cpp:1929
 msgid "Between objects G-code (for sequential printing)"
-msgstr "Between objects G-code (for sequential printing)"
+msgstr "Entre le G-code des objets (pour une impression séquentielle)"
 
 #: src/slic3r/GUI/Tab.cpp:1990
 msgid "Display"
-msgstr "Display"
+msgstr ""
 
 #: src/slic3r/GUI/Tab.cpp:2001
 msgid "Tilt"
-msgstr "Tilt"
+msgstr ""
 
 #: src/slic3r/GUI/Tab.cpp:2002
 msgid "Tilt time"
-msgstr "Tilt time"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2008 src/slic3r/GUI/Tab.cpp:3223
+#: src/slic3r/GUI/Tab.cpp:2008 src/slic3r/GUI/Tab.cpp:3224
 msgid "Corrections"
-msgstr "Corrections"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2074 src/slic3r/GUI/Tab.cpp:2136
+#: src/slic3r/GUI/Tab.cpp:2075 src/slic3r/GUI/Tab.cpp:2137
 #: src/libslic3r/PrintConfig.cpp:1076 src/libslic3r/PrintConfig.cpp:1086
 #: src/libslic3r/PrintConfig.cpp:1096 src/libslic3r/PrintConfig.cpp:1109
 #: src/libslic3r/PrintConfig.cpp:1120 src/libslic3r/PrintConfig.cpp:1131
 #: src/libslic3r/PrintConfig.cpp:1142
 msgid "Machine limits"
-msgstr "Machine limits"
-
-#: src/slic3r/GUI/Tab.cpp:2088
-msgid "Values in this column are for Full Power mode"
-msgstr "Values in this column are for Full Power mode"
+msgstr ""
 
 #: src/slic3r/GUI/Tab.cpp:2089
-msgid "Full Power"
-msgstr "Full Power"
+msgid "Values in this column are for Full Power mode"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2094
-msgid "Values in this column are for Silent mode"
-msgstr "Values in this column are for Silent mode"
+#: src/slic3r/GUI/Tab.cpp:2090
+msgid "Full Power"
+msgstr ""
 
 #: src/slic3r/GUI/Tab.cpp:2095
+msgid "Values in this column are for Silent mode"
+msgstr ""
+
+#: src/slic3r/GUI/Tab.cpp:2096
 msgid "Silent"
-msgstr "Silent"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2103
+#: src/slic3r/GUI/Tab.cpp:2104
 msgid "Maximum feedrates"
-msgstr "Maximum feedrates"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2108
+#: src/slic3r/GUI/Tab.cpp:2109
 msgid "Maximum accelerations"
-msgstr "Maximum accelerations"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2115
+#: src/slic3r/GUI/Tab.cpp:2116
 msgid "Jerk limits"
-msgstr "Jerk limits"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2120
+#: src/slic3r/GUI/Tab.cpp:2121
 msgid "Minimum feedrates"
-msgstr "Minimum feedrates"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2158 src/slic3r/GUI/Tab.cpp:2166
+#: src/slic3r/GUI/Tab.cpp:2159 src/slic3r/GUI/Tab.cpp:2167
 msgid "Single extruder MM setup"
-msgstr "Single extruder MM setup"
+msgstr "Réglage MM pour extrudeur unique"
 
-#: src/slic3r/GUI/Tab.cpp:2167
+#: src/slic3r/GUI/Tab.cpp:2168
 msgid "Single extruder multimaterial parameters"
-msgstr "Single extruder multimaterial parameters"
+msgstr "Paramètres multimatériaux pour extrudeur unique"
 
-#: src/slic3r/GUI/Tab.cpp:2181 src/libslic3r/GCode/PreviewData.cpp:475
+#: src/slic3r/GUI/Tab.cpp:2182 src/libslic3r/GCode/PreviewData.cpp:475
 #, c-format
 msgid "Extruder %d"
-msgstr "Extruder %d"
+msgstr "Extrudeur %d"
 
-#: src/slic3r/GUI/Tab.cpp:2188
+#: src/slic3r/GUI/Tab.cpp:2189
 msgid "Layer height limits"
-msgstr "Layer height limits"
+msgstr "Limites de hauteur de couche"
 
-#: src/slic3r/GUI/Tab.cpp:2193
+#: src/slic3r/GUI/Tab.cpp:2194
 msgid "Position (for multi-extruder printers)"
-msgstr "Position (for multi-extruder printers)"
+msgstr "Position (pour les imprimantes multi-extrudeurs)"
 
-#: src/slic3r/GUI/Tab.cpp:2196
+#: src/slic3r/GUI/Tab.cpp:2197
 msgid "Retraction"
-msgstr "Retraction"
+msgstr "Rétraction"
 
-#: src/slic3r/GUI/Tab.cpp:2199
+#: src/slic3r/GUI/Tab.cpp:2200
 msgid "Only lift Z"
-msgstr "Only lift Z"
+msgstr "Lever Z seulement"
 
-#: src/slic3r/GUI/Tab.cpp:2212
+#: src/slic3r/GUI/Tab.cpp:2213
 msgid ""
 "Retraction when tool is disabled (advanced settings for multi-extruder "
 "setups)"
 msgstr ""
-"Retraction when tool is disabled (advanced settings for multi-extruder "
-"setups)"
+"Rétractation lorsque l'outil est désactivé (réglages avancés pour les "
+"configurations multi-extrudeurs)"
 
-#: src/slic3r/GUI/Tab.cpp:2216
+#: src/slic3r/GUI/Tab.cpp:2217
 msgid "Preview"
-msgstr "Preview"
+msgstr "Aperçu"
 
-#: src/slic3r/GUI/Tab.cpp:2352
+#: src/slic3r/GUI/Tab.cpp:2353
 msgid ""
 "The Wipe option is not available when using the Firmware Retraction mode.\n"
 "\n"
 "Shall I disable it in order to enable Firmware Retraction?"
 msgstr ""
-"The Wipe option is not available when using the Firmware Retraction mode.\n"
+"L'option Nettoyage n'est pas disponible lorsque vous utilisez le mode "
+"Rétractation du Firmware.\n"
 "\n"
-"Shall I disable it in order to enable Firmware Retraction?"
+"Voulez-vous que je la désactive pour permettre la Rétractation du Firmware ?"
 
-#: src/slic3r/GUI/Tab.cpp:2354
+#: src/slic3r/GUI/Tab.cpp:2355
 msgid "Firmware Retraction"
-msgstr "Firmware Retraction"
-
-#: src/slic3r/GUI/Tab.cpp:2681
-#, c-format
-msgid "Default preset (%s)"
-msgstr "Default preset (%s)"
+msgstr "Rétraction du Firmware"
 
 #: src/slic3r/GUI/Tab.cpp:2682
 #, c-format
+msgid "Default preset (%s)"
+msgstr "Préréglages par défaut (%s)"
+
+#: src/slic3r/GUI/Tab.cpp:2683
+#, c-format
 msgid "Preset (%s)"
-msgstr "Preset (%s)"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2699
+#: src/slic3r/GUI/Tab.cpp:2700
 msgid "has the following unsaved changes:"
-msgstr "has the following unsaved changes:"
-
-#: src/slic3r/GUI/Tab.cpp:2702
-msgid "is not compatible with printer"
-msgstr "is not compatible with printer"
+msgstr "a les changements suivants non-enregistrés :"
 
 #: src/slic3r/GUI/Tab.cpp:2703
+msgid "is not compatible with printer"
+msgstr "n'est pas compatible avec l'imprimante"
+
+#: src/slic3r/GUI/Tab.cpp:2704
 msgid "is not compatible with print profile"
-msgstr "is not compatible with print profile"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2705
+#: src/slic3r/GUI/Tab.cpp:2706
 msgid "and it has the following unsaved changes:"
-msgstr "and it has the following unsaved changes:"
-
-#: src/slic3r/GUI/Tab.cpp:2708
-msgid "Discard changes and continue anyway?"
-msgstr "Discard changes and continue anyway?"
+msgstr "et il y a les changements non sauvegardés suivants :"
 
 #: src/slic3r/GUI/Tab.cpp:2709
+msgid "Discard changes and continue anyway?"
+msgstr "Annuler les changements et continuer malgré tout ?"
+
+#: src/slic3r/GUI/Tab.cpp:2710
 msgid "Unsaved Changes"
-msgstr "Unsaved Changes"
+msgstr "Changements Non Sauvegardés"
 
-#: src/slic3r/GUI/Tab.cpp:2721
+#: src/slic3r/GUI/Tab.cpp:2722
 msgid "Please check your object list before preset changing."
-msgstr "Please check your object list before preset changing."
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2801
+#: src/slic3r/GUI/Tab.cpp:2802
 msgid "Copy"
-msgstr "Copy"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:2823
+#: src/slic3r/GUI/Tab.cpp:2824
 msgid "The supplied name is empty. It can't be saved."
-msgstr "The supplied name is empty. It can't be saved."
+msgstr "Le nom proposé est vide. Sauvegarde impossible."
 
-#: src/slic3r/GUI/Tab.cpp:2828
+#: src/slic3r/GUI/Tab.cpp:2829
 msgid "Cannot overwrite a system profile."
-msgstr "Cannot overwrite a system profile."
+msgstr "Impossible d'écraser un profil système."
 
-#: src/slic3r/GUI/Tab.cpp:2832
+#: src/slic3r/GUI/Tab.cpp:2833
 msgid "Cannot overwrite an external profile."
-msgstr "Cannot overwrite an external profile."
+msgstr "Impossible d'écraser un profil externe."
 
-#: src/slic3r/GUI/Tab.cpp:2858
+#: src/slic3r/GUI/Tab.cpp:2859
 msgid "remove"
-msgstr "remove"
+msgstr "retirer"
 
-#: src/slic3r/GUI/Tab.cpp:2858
+#: src/slic3r/GUI/Tab.cpp:2859
 msgid "delete"
-msgstr "delete"
-
-#: src/slic3r/GUI/Tab.cpp:2859
-msgid "Are you sure you want to "
-msgstr "Are you sure you want to "
-
-#: src/slic3r/GUI/Tab.cpp:2859
-msgid " the selected preset?"
-msgstr " the selected preset?"
+msgstr "supprimer"
 
 #: src/slic3r/GUI/Tab.cpp:2860
-msgid "Remove"
-msgstr "Remove"
+msgid "Are you sure you want to "
+msgstr "Êtes-vous sûr de vouloir "
+
+#: src/slic3r/GUI/Tab.cpp:2860
+msgid " the selected preset?"
+msgstr " le préréglage sélectionné ?"
 
 #: src/slic3r/GUI/Tab.cpp:2861
+msgid "Remove"
+msgstr "Retirer"
+
+#: src/slic3r/GUI/Tab.cpp:2862
 msgid " Preset"
-msgstr " Preset"
+msgstr " Préréglage"
 
-#: src/slic3r/GUI/Tab.cpp:2989
+#: src/slic3r/GUI/Tab.cpp:2990
 msgid ""
 "LOCKED LOCK;indicates that the settings are the same as the system values "
 "for the current option group"
 msgstr ""
-"LOCKED LOCK;indicates that the settings are the same as the system values "
-"for the current option group"
+"VERROU VERROUILLE;indique que les paramètres sont les mêmes que les valeurs "
+"système pour le groupe d'options en cours"
 
-#: src/slic3r/GUI/Tab.cpp:2992
+#: src/slic3r/GUI/Tab.cpp:2993
 msgid ""
 "UNLOCKED LOCK;indicates that some settings were changed and are not equal to "
 "the system values for the current option group.\n"
 "Click the UNLOCKED LOCK icon to reset all settings for current option group "
 "to the system values."
 msgstr ""
-"UNLOCKED LOCK;indicates that some settings were changed and are not equal to "
-"the system values for the current option group.\n"
-"Click the UNLOCKED LOCK icon to reset all settings for current option group "
-"to the system values."
+"CADENAS OUVERT;indique que certains paramètres ont été modifiés et ne sont "
+"pas égaux aux valeurs du système pour le groupe d'options actuel.\n"
+"Cliquez sur l'icône CADENAS OUVERT pour régler tous les paramètres pour le "
+"groupe d'options actuel sur les valeurs du système."
 
-#: src/slic3r/GUI/Tab.cpp:2998
+#: src/slic3r/GUI/Tab.cpp:2999
 msgid ""
 "WHITE BULLET;for the left button: \tindicates a non-system preset,\n"
 "for the right button: \tindicates that the settings hasn't been modified."
 msgstr ""
-"WHITE BULLET;for the left button: \tindicates a non-system preset,\n"
-"for the right button: \tindicates that the settings hasn't been modified."
+"PUCE BLANCHE;pour le bouton gauche : indique un préréglage non-système, pour "
+"le bouton droit : indique que le réglage n'a pas été modifié."
 
-#: src/slic3r/GUI/Tab.cpp:3002
+#: src/slic3r/GUI/Tab.cpp:3003
 msgid ""
 "BACK ARROW;indicates that the settings were changed and are not equal to the "
 "last saved preset for the current option group.\n"
 "Click the BACK ARROW icon to reset all settings for the current option group "
 "to the last saved preset."
 msgstr ""
-"BACK ARROW;indicates that the settings were changed and are not equal to the "
-"last saved preset for the current option group.\n"
-"Click the BACK ARROW icon to reset all settings for the current option group "
-"to the last saved preset."
+"FLÈCHE ARRIÈRE;indique que les paramètres ont été changés et qu'ils ne sont "
+"pas identiques au dernier préréglage enregistré du groupe d'options en "
+"cours.\n"
+"Cliquez sur l'icône FLÈCHE ARRIÈRE pour restaurer tous les paramètres du "
+"groupe d'options en cours avec les valeurs du dernier préréglage enregistré."
 
-#: src/slic3r/GUI/Tab.cpp:3028
+#: src/slic3r/GUI/Tab.cpp:3029
 msgid ""
 "LOCKED LOCK icon indicates that the settings are the same as the system "
 "values for the current option group"
 msgstr ""
-"LOCKED LOCK icon indicates that the settings are the same as the system "
-"values for the current option group"
+"L'icône VERROU VERROUILLE indique que les paramètres sont les mêmes que les "
+"valeurs système pour le groupe d'options en cours"
 
-#: src/slic3r/GUI/Tab.cpp:3030
+#: src/slic3r/GUI/Tab.cpp:3031
 msgid ""
 "UNLOCKED LOCK icon indicates that some settings were changed and are not "
 "equal to the system values for the current option group.\n"
 "Click to reset all settings for current option group to the system values."
 msgstr ""
-"UNLOCKED LOCK icon indicates that some settings were changed and are not "
-"equal to the system values for the current option group.\n"
-"Click to reset all settings for current option group to the system values."
+"L'icône CADENAS OUVERT indique que certains paramètres ont été modifiés et "
+"ne sont pas égaux aux valeurs du système pour le groupe d'options actuel.\n"
+"Cliquez pour régler tous les paramètres pour le groupe d'options actuel sur "
+"les valeurs du système."
 
-#: src/slic3r/GUI/Tab.cpp:3033
+#: src/slic3r/GUI/Tab.cpp:3034
 msgid "WHITE BULLET icon indicates a non system preset."
-msgstr "WHITE BULLET icon indicates a non system preset."
+msgstr "L'icône en forme de PUCE BLANCHE indique un préréglage non-système."
 
-#: src/slic3r/GUI/Tab.cpp:3036
+#: src/slic3r/GUI/Tab.cpp:3037
 msgid ""
 "WHITE BULLET icon indicates that the settings are the same as in the last "
 "saved preset for the current option group."
 msgstr ""
-"WHITE BULLET icon indicates that the settings are the same as in the last "
-"saved preset for the current option group."
+"L'icône en forme de PUCE BLANCHE indique que les réglages sont identiques au "
+"dernier préréglage sauvegardé pour le groupe d'options actuel."
 
-#: src/slic3r/GUI/Tab.cpp:3038
+#: src/slic3r/GUI/Tab.cpp:3039
 msgid ""
 "BACK ARROW icon indicates that the settings were changed and are not equal "
 "to the last saved preset for the current option group.\n"
 "Click to reset all settings for the current option group to the last saved "
 "preset."
 msgstr ""
-"BACK ARROW icon indicates that the settings were changed and are not equal "
-"to the last saved preset for the current option group.\n"
-"Click to reset all settings for the current option group to the last saved "
-"preset."
-
-#: src/slic3r/GUI/Tab.cpp:3044
-msgid ""
-"LOCKED LOCK icon indicates that the value is the same as the system value."
-msgstr ""
-"LOCKED LOCK icon indicates that the value is the same as the system value."
+"L'icône FLÈCHE ARRIÈRE indique que les paramètres ont été changés et qu'ils "
+"ne sont pas identiques au dernier préréglage enregistré du groupe d'options "
+"en cours.\n"
+"Cliquez pour restaurer tous les paramètres du groupe d'options en cours avec "
+"les valeurs du dernier préréglage enregistré."
 
 #: src/slic3r/GUI/Tab.cpp:3045
 msgid ""
-"UNLOCKED LOCK icon indicates that the value was changed and is not equal to "
-"the system value.\n"
-"Click to reset current value to the system value."
+"LOCKED LOCK icon indicates that the value is the same as the system value."
 msgstr ""
-"UNLOCKED LOCK icon indicates that the value was changed and is not equal to "
-"the system value.\n"
-"Click to reset current value to the system value."
+"L'icône VERROU VERROUILLE indique que la valeur est la même que la valeur "
+"système."
 
-#: src/slic3r/GUI/Tab.cpp:3051
+#: src/slic3r/GUI/Tab.cpp:3046
 msgid ""
-"WHITE BULLET icon indicates that the value is the same as in the last saved "
-"preset."
+"UNLOCKED LOCK icon indicates that the value was changed and is not equal to "
+"the system value.\n"
+"Click to reset current value to the system value."
 msgstr ""
-"WHITE BULLET icon indicates that the value is the same as in the last saved "
-"preset."
+"L'icône CADENAS OUVERT indique que la valeur a été changée et n'est pas "
+"égale à la valeur du système.\n"
+"Cliquez pour régler la valeur actuelle sur les valeurs du système."
 
 #: src/slic3r/GUI/Tab.cpp:3052
 msgid ""
+"WHITE BULLET icon indicates that the value is the same as in the last saved "
+"preset."
+msgstr ""
+"L'icône PUCE BLANCHE indique que la valeur est la même que pour le dernier "
+"préréglage sauvegardé."
+
+#: src/slic3r/GUI/Tab.cpp:3053
+msgid ""
 "BACK ARROW icon indicates that the value was changed and is not equal to the "
 "last saved preset.\n"
 "Click to reset current value to the last saved preset."
 msgstr ""
-"BACK ARROW icon indicates that the value was changed and is not equal to the "
-"last saved preset.\n"
-"Click to reset current value to the last saved preset."
+"L'icône FLÈCHE ARRIÈRE indique que la valeur a été changée et qu'elle n'est "
+"pas identique au dernier préréglage enregistré.\n"
+"Cliquez pour restaurer la valeur à celle du dernier préréglage enregistré."
 
-#: src/slic3r/GUI/Tab.cpp:3152
+# Used in this context: _("Save ") + title + _(" as:")
+#: src/slic3r/GUI/Tab.cpp:3153
 msgid " as:"
-msgstr " as:"
+msgstr " sous :"
 
-#: src/slic3r/GUI/Tab.cpp:3196
+#: src/slic3r/GUI/Tab.cpp:3197
 msgid "the following postfix are not allowed:"
-msgstr "the following postfix are not allowed:"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3200
+#: src/slic3r/GUI/Tab.cpp:3201
 msgid "The supplied name is not available."
-msgstr "The supplied name is not available."
+msgstr "Le nom proposé n'est pas disponible."
 
-#: src/slic3r/GUI/Tab.cpp:3213
+#: src/slic3r/GUI/Tab.cpp:3214
 msgid "Material"
-msgstr "Material"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3215 src/slic3r/GUI/Tab.cpp:3305
+#: src/slic3r/GUI/Tab.cpp:3216 src/slic3r/GUI/Tab.cpp:3307
 msgid "Layers"
-msgstr "Layers"
+msgstr "Couches"
 
-#: src/slic3r/GUI/Tab.cpp:3219
+#: src/slic3r/GUI/Tab.cpp:3220
 msgid "Exposure"
-msgstr "Exposure"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3313
+#: src/slic3r/GUI/Tab.cpp:3315
 msgid "Support head"
-msgstr "Support head"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3318
+#: src/slic3r/GUI/Tab.cpp:3320
 msgid "Support pillar"
-msgstr "Support pillar"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3328
+#: src/slic3r/GUI/Tab.cpp:3330
 msgid "Connection of the support sticks and junctions"
-msgstr "Connection of the support sticks and junctions"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3333
+#: src/slic3r/GUI/Tab.cpp:3335
 msgid "Automatic generation"
-msgstr "Automatic generation"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3395
+#: src/slic3r/GUI/Tab.cpp:3397
 msgid "Head penetration should not be greater than the head width."
-msgstr "Head penetration should not be greater than the head width."
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3396
+#: src/slic3r/GUI/Tab.cpp:3398
 msgid "Invalid Head penetration"
-msgstr "Invalid Head penetration"
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3408
+#: src/slic3r/GUI/Tab.cpp:3410
 msgid "Pinhead diameter should be smaller than the pillar diameter."
-msgstr "Pinhead diameter should be smaller than the pillar diameter."
+msgstr ""
 
-#: src/slic3r/GUI/Tab.cpp:3409
+#: src/slic3r/GUI/Tab.cpp:3411
 msgid "Invalid pinhead diameter"
-msgstr "Invalid pinhead diameter"
+msgstr ""
 
 #: src/slic3r/GUI/Tab.hpp:307 src/slic3r/GUI/Tab.hpp:395
 msgid "Print Settings"
-msgstr "Print Settings"
+msgstr "Réglages d'Impression"
 
 #: src/slic3r/GUI/Tab.hpp:325
 msgid "Filament Settings"
-msgstr "Filament Settings"
+msgstr "Réglages du filament"
 
 #: src/slic3r/GUI/Tab.hpp:358
 msgid "Printer Settings"
-msgstr "Printer Settings"
+msgstr "Réglages de l'Imprimante"
 
 #: src/slic3r/GUI/Tab.hpp:381
 msgid "Material Settings"
-msgstr "Material Settings"
+msgstr ""
 
 #: src/slic3r/GUI/Tab.hpp:407
 msgid "Save preset"
-msgstr "Save preset"
+msgstr "Enregistrer le préréglage"
 
-#: src/slic3r/GUI/UpdateDialogs.cpp:29
+#: src/slic3r/GUI/UpdateDialogs.cpp:30
 msgid "Update available"
-msgstr "Update available"
+msgstr "Mise à jour disponible"
 
-#: src/slic3r/GUI/UpdateDialogs.cpp:29
-msgid "New version of Slic3r PE is available"
-msgstr "New version of Slic3r PE is available"
-
-#: src/slic3r/GUI/UpdateDialogs.cpp:36
-msgid "To download, follow the link below."
-msgstr "To download, follow the link below."
-
-#: src/slic3r/GUI/UpdateDialogs.cpp:44
-msgid "Current version:"
-msgstr "Current version:"
-
-#: src/slic3r/GUI/UpdateDialogs.cpp:46
-msgid "New version:"
-msgstr "New version:"
-
-#: src/slic3r/GUI/UpdateDialogs.cpp:54
-msgid "Don't notify about new releases any more"
-msgstr "Don't notify about new releases any more"
-
-#: src/slic3r/GUI/UpdateDialogs.cpp:72 src/slic3r/GUI/UpdateDialogs.cpp:164
-msgid "Configuration update"
-msgstr "Configuration update"
-
-#: src/slic3r/GUI/UpdateDialogs.cpp:72
-msgid "Configuration update is available"
-msgstr "Configuration update is available"
-
-#: src/slic3r/GUI/UpdateDialogs.cpp:75
-msgid ""
-"Would you like to install it?\n"
-"\n"
-"Note that a full configuration snapshot will be created first. It can then "
-"be restored at any time should there be a problem with the new version.\n"
-"\n"
-"Updated configuration bundles:"
-msgstr ""
-"Would you like to install it?\n"
-"\n"
-"Note that a full configuration snapshot will be created first. It can then "
-"be restored at any time should there be a problem with the new version.\n"
-"\n"
-"Updated configuration bundles:"
-
-#: src/slic3r/GUI/UpdateDialogs.cpp:111
-msgid "Slic3r incompatibility"
-msgstr "Slic3r incompatibility"
-
-#: src/slic3r/GUI/UpdateDialogs.cpp:111
-msgid "Slic3r configuration is incompatible"
-msgstr "Slic3r configuration is incompatible"
-
-#: src/slic3r/GUI/UpdateDialogs.cpp:114
-msgid ""
-"This version of Slic3r PE is not compatible with currently installed "
-"configuration bundles.\n"
-"This probably happened as a result of running an older Slic3r PE after using "
-"a newer one.\n"
-"\n"
-"You may either exit Slic3r and try again with a newer version, or you may re-"
-"run the initial configuration. Doing so will create a backup snapshot of the "
-"existing configuration before installing files compatible with this Slic3r.\n"
-msgstr ""
-"This version of Slic3r PE is not compatible with currently installed "
-"configuration bundles.\n"
-"This probably happened as a result of running an older Slic3r PE after using "
-"a newer one.\n"
-"\n"
-"You may either exit Slic3r and try again with a newer version, or you may re-"
-"run the initial configuration. Doing so will create a backup snapshot of the "
-"existing configuration before installing files compatible with this Slic3r.\n"
-
-#: src/slic3r/GUI/UpdateDialogs.cpp:123
+#: src/slic3r/GUI/UpdateDialogs.cpp:30
 #, c-format
-msgid "This Slic3r PE version: %s"
-msgstr "This Slic3r PE version: %s"
+msgid "New version of %s is available"
+msgstr ""
 
-#: src/slic3r/GUI/UpdateDialogs.cpp:128
+#: src/slic3r/GUI/UpdateDialogs.cpp:37
+msgid "To download, follow the link below."
+msgstr "Pour télécharger, suivez le lien ci-dessous."
+
+#: src/slic3r/GUI/UpdateDialogs.cpp:45
+msgid "Current version:"
+msgstr "Version actuelle :"
+
+#: src/slic3r/GUI/UpdateDialogs.cpp:47
+msgid "New version:"
+msgstr "Nouvelle version :"
+
+#: src/slic3r/GUI/UpdateDialogs.cpp:55
+msgid "Don't notify about new releases any more"
+msgstr "Ne plus me notifier au sujet des nouvelles publications"
+
+#: src/slic3r/GUI/UpdateDialogs.cpp:73 src/slic3r/GUI/UpdateDialogs.cpp:167
+msgid "Configuration update"
+msgstr "Mise à jour de la configuration"
+
+#: src/slic3r/GUI/UpdateDialogs.cpp:73
+msgid "Configuration update is available"
+msgstr "Une mise à jour de la configuration est disponible"
+
+#: src/slic3r/GUI/UpdateDialogs.cpp:76
+msgid ""
+"Would you like to install it?\n"
+"\n"
+"Note that a full configuration snapshot will be created first. It can then "
+"be restored at any time should there be a problem with the new version.\n"
+"\n"
+"Updated configuration bundles:"
+msgstr ""
+"Voulez-vous l'installer ?\n"
+"\n"
+"Notez qu'un snapshot complet de la configuration sera sauvegardé d'abord. "
+"Elle peut être restaurée à tout moment si vous rencontrez un problème avec "
+"la nouvelle version.\n"
+"\n"
+"Ensembles de configuration mis à jour :"
+
+#: src/slic3r/GUI/UpdateDialogs.cpp:112
+msgid "Slic3r incompatibility"
+msgstr "Incompatibilité avec Slic3r"
+
+#: src/slic3r/GUI/UpdateDialogs.cpp:112
+msgid "Slic3r configuration is incompatible"
+msgstr "La configuration de Slic3r n'est pas compatible"
+
+#: src/slic3r/GUI/UpdateDialogs.cpp:117
+#, c-format
+msgid ""
+"This version of %s is not compatible with currently installed configuration "
+"bundles.\n"
+"This probably happened as a result of running an older %s after using a "
+"newer one.\n"
+"\n"
+"You may either exit Slic3r and try again with a newer version, or you may re-"
+"run the initial configuration. Doing so will create a backup snapshot of the "
+"existing configuration before installing files compatible with this Slic3r.\n"
+msgstr ""
+
+#: src/slic3r/GUI/UpdateDialogs.cpp:126
+#, c-format
+msgid "This %s version: %s"
+msgstr ""
+
+#: src/slic3r/GUI/UpdateDialogs.cpp:131
 msgid "Incompatible bundles:"
-msgstr "Incompatible bundles:"
-
-#: src/slic3r/GUI/UpdateDialogs.cpp:144
-msgid "Exit Slic3r"
-msgstr "Exit Slic3r"
+msgstr "Lots incompatibles :"
 
 #: src/slic3r/GUI/UpdateDialogs.cpp:147
-msgid "Re-configure"
-msgstr "Re-configure"
+msgid "Exit Slic3r"
+msgstr "Quitter Slic3r"
 
-#: src/slic3r/GUI/UpdateDialogs.cpp:168
+#: src/slic3r/GUI/UpdateDialogs.cpp:150
+msgid "Re-configure"
+msgstr "Reconfigurer"
+
+#: src/slic3r/GUI/UpdateDialogs.cpp:171
 #, c-format
 msgid ""
-"Slic3r PE now uses an updated configuration structure.\n"
+"%s now uses an updated configuration structure.\n"
 "\n"
 "So called 'System presets' have been introduced, which hold the built-in "
 "default settings for various printers. These System presets cannot be "
@@ -3999,25 +4041,14 @@ msgid ""
 "Please proceed with the %s that follows to set up the new presets and to "
 "choose whether to enable automatic preset updates."
 msgstr ""
-"Slic3r PE now uses an updated configuration structure.\n"
-"\n"
-"So called 'System presets' have been introduced, which hold the built-in "
-"default settings for various printers. These System presets cannot be "
-"modified, instead, users now may create their own presets inheriting "
-"settings from one of the System presets.\n"
-"An inheriting preset may either inherit a particular value from its parent "
-"or override it with a customized value.\n"
-"\n"
-"Please proceed with the %s that follows to set up the new presets and to "
-"choose whether to enable automatic preset updates."
 
-#: src/slic3r/GUI/UpdateDialogs.cpp:184
+#: src/slic3r/GUI/UpdateDialogs.cpp:187
 msgid "For more information please visit our wiki page:"
-msgstr "For more information please visit our wiki page:"
+msgstr "Pour plus d'informations, merci de visiter notre page wiki :"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:14
 msgid "Ramming customization"
-msgstr "Ramming customization"
+msgstr "Personnalisation de l'expulsion"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:40
 msgid ""
@@ -4031,75 +4062,77 @@ msgid ""
 "This is an expert-level setting, incorrect adjustment will likely lead to "
 "jams, extruder wheel grinding into filament etc."
 msgstr ""
-"Ramming denotes the rapid extrusion just before a tool change in a single-"
-"extruder MM printer. Its purpose is to properly shape the end of the "
-"unloaded filament so it does not prevent insertion of the new filament and "
-"can itself be reinserted later. This phase is important and different "
-"materials can require different extrusion speeds to get the good shape. For "
-"this reason, the extrusion rates during ramming are adjustable.\n"
+"L'Expulsion décrit l'extrusion rapide qui a lieu juste avant un changement "
+"d'outil sur une imprimante MM à extrudeur unique. Le but est de donner une "
+"forme correcte au filament déchargé afin qu'il n'empêche pas l'insertion du "
+"nouveau filament et puisse être réinséré lui-même plus tard. Cette phase est "
+"importante et  des matériaux différents peuvent nécessiter des vitesses "
+"d'extrusion différentes pour obtenir la bonne forme. De ce fait, les débits "
+"d'extrusion pendant l'expulsion sont ajustables.\n"
 "\n"
-"This is an expert-level setting, incorrect adjustment will likely lead to "
-"jams, extruder wheel grinding into filament etc."
+"Ceci est un paramétrage de niveau expert, et un mauvais ajustement "
+"provoquera probablement des blocages, des accrochages de la roue de "
+"l'extrudeur sur le filament , etc ..."
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:82
 msgid "Total ramming time"
-msgstr "Total ramming time"
+msgstr "Durée totale de l'expulsion"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:84
 msgid "Total rammed volume"
-msgstr "Total rammed volume"
+msgstr "Volume total expulsé"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:88
 msgid "Ramming line width"
-msgstr "Ramming line width"
+msgstr "Largeur de la ligne d'expulsion"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:90
 msgid "Ramming line spacing"
-msgstr "Ramming line spacing"
+msgstr "Espacement de la ligne de ramming"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:141
 msgid "Wipe tower - Purging volume adjustment"
-msgstr "Wipe tower - Purging volume adjustment"
+msgstr "Tour de nettoyage - Ajustement du volume de purge"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:225
 msgid ""
 "Here you can adjust required purging volume (mm³) for any given pair of "
 "tools."
 msgstr ""
-"Here you can adjust required purging volume (mm³) for any given pair of "
-"tools."
+"Ici vous pouvez ajuster le volume de purge nécessaire (mm³) pour une paire "
+"d'outils donnée."
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:226
 msgid "Extruder changed to"
-msgstr "Extruder changed to"
+msgstr "Extrudeur changé à"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:234
 msgid "unloaded"
-msgstr "unloaded"
+msgstr "déchargé"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:235
 msgid "loaded"
-msgstr "loaded"
+msgstr "chargé"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:240
 msgid "Tool #"
-msgstr "Tool #"
+msgstr "Outil #"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:247
 msgid ""
 "Total purging volume is calculated by summing two values below, depending on "
 "which tools are loaded/unloaded."
 msgstr ""
-"Total purging volume is calculated by summing two values below, depending on "
-"which tools are loaded/unloaded."
+"Le volume de purge total est calculé en additionnant les deux valeurs ci-"
+"dessous, en fonction des outils qui sont chargés/déchargés."
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:248
 msgid "Volume to purge (mm³) when the filament is being"
-msgstr "Volume to purge (mm³) when the filament is being"
+msgstr "Volume à purger (mm³) lorsque le filament est"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:262
 msgid "From"
-msgstr "From"
+msgstr "De"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:327
 msgid ""
@@ -4108,570 +4141,501 @@ msgid ""
 "\n"
 "Do you want to proceed?"
 msgstr ""
-"Switching to simple settings will discard changes done in the advanced "
-"mode!\n"
+"Basculer vers les réglages simples annulera les changements effectués en "
+"mode avancé !\n"
 "\n"
-"Do you want to proceed?"
+"Voulez-vous continuer ?"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:339
 msgid "Show simplified settings"
-msgstr "Show simplified settings"
+msgstr "Afficher les réglages simplifiés"
 
 #: src/slic3r/GUI/WipeTowerDialog.cpp:339
 msgid "Show advanced settings"
-msgstr "Show advanced settings"
+msgstr "Afficher les réglages avancés"
 
-#: src/slic3r/GUI/wxExtensions.cpp:2398
+#: src/slic3r/GUI/wxExtensions.cpp:2409
 #, c-format
 msgid "Switch to the %s mode"
-msgstr "Switch to the %s mode"
+msgstr ""
 
-#: src/slic3r/GUI/wxExtensions.cpp:2399
+#: src/slic3r/GUI/wxExtensions.cpp:2410
 #, c-format
 msgid "Current mode is %s"
-msgstr "Current mode is %s"
+msgstr ""
 
 #: src/slic3r/Utils/Duet.cpp:51
 msgid "Connection to Duet works correctly."
-msgstr "Connection to Duet works correctly."
+msgstr ""
 
 #: src/slic3r/Utils/Duet.cpp:56
 msgid "Could not connect to Duet"
-msgstr "Could not connect to Duet"
+msgstr ""
 
 #: src/slic3r/Utils/Duet.cpp:84 src/slic3r/Utils/Duet.cpp:154
 msgid "Unknown error occured"
-msgstr "Unknown error occured"
+msgstr ""
 
 #: src/slic3r/Utils/Duet.cpp:148
 msgid "Wrong password"
-msgstr "Wrong password"
+msgstr ""
 
 #: src/slic3r/Utils/Duet.cpp:151
 msgid "Could not get resources to create a new connection"
-msgstr "Could not get resources to create a new connection"
+msgstr ""
 
 #: src/slic3r/Utils/OctoPrint.cpp:69
 #, c-format
 msgid "Mismatched type of print host: %s"
-msgstr "Mismatched type of print host: %s"
+msgstr ""
 
 #: src/slic3r/Utils/OctoPrint.cpp:84
 msgid "Connection to OctoPrint works correctly."
-msgstr "Connection to OctoPrint works correctly."
+msgstr "La connexion avec OctoPrint fonctionne correctement."
 
 #: src/slic3r/Utils/OctoPrint.cpp:90
 msgid "Could not connect to OctoPrint"
-msgstr "Could not connect to OctoPrint"
+msgstr "Impossible de se connecter à OctoPrint"
 
 #: src/slic3r/Utils/OctoPrint.cpp:90
 msgid "Note: OctoPrint version at least 1.1.0 is required."
-msgstr "Note: OctoPrint version at least 1.1.0 is required."
+msgstr ""
+"Note : une version d'Octoprint supérieure ou égale à 1.1.0 est requise."
 
 #: src/slic3r/Utils/OctoPrint.cpp:195
 msgid "Connection to Prusa SLA works correctly."
-msgstr "Connection to Prusa SLA works correctly."
+msgstr ""
 
 #: src/slic3r/Utils/OctoPrint.cpp:200
 msgid "Could not connect to Prusa SLA"
-msgstr "Could not connect to Prusa SLA"
+msgstr ""
 
 #: src/slic3r/Utils/PresetUpdater.cpp:583
 #, c-format
 msgid "requires min. %s and max. %s"
-msgstr "requires min. %s and max. %s"
+msgstr "nécessite min. %s et max. %s"
 
 #: src/slic3r/Utils/PresetUpdater.cpp:588
 #, c-format
 msgid "requires min. %s"
-msgstr "requires min. %s"
+msgstr ""
 
 #: src/slic3r/Utils/PresetUpdater.cpp:590
 #, c-format
 msgid "requires max. %s"
-msgstr "requires max. %s"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:219
 #: src/slic3r/Utils/FixModelByWin10.cpp:359
 msgid "Exporting source model"
-msgstr "Exporting source model"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:235
 msgid "Failed loading the input model."
-msgstr "Failed loading the input model."
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:242
 msgid "Repairing model by the Netfabb service"
-msgstr "Repairing model by the Netfabb service"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:248
 msgid "Mesh repair failed."
-msgstr "Mesh repair failed."
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:251
 #: src/slic3r/Utils/FixModelByWin10.cpp:378
 msgid "Loading repaired model"
-msgstr "Loading repaired model"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:263
 #: src/slic3r/Utils/FixModelByWin10.cpp:270
 #: src/slic3r/Utils/FixModelByWin10.cpp:302
 msgid "Saving mesh into the 3MF container failed."
-msgstr "Saving mesh into the 3MF container failed."
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:340
 msgid "Model fixing"
-msgstr "Model fixing"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:341
 msgid "Exporting model..."
-msgstr "Exporting model..."
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:368
 msgid "Export of a temporary 3mf file failed"
-msgstr "Export of a temporary 3mf file failed"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:383
 msgid "Import of the repaired 3mf file failed"
-msgstr "Import of the repaired 3mf file failed"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:385
 msgid "Repaired 3MF file does not contain any object"
-msgstr "Repaired 3MF file does not contain any object"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:387
 msgid "Repaired 3MF file contains more than one object"
-msgstr "Repaired 3MF file contains more than one object"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:389
 msgid "Repaired 3MF file does not contain any volume"
-msgstr "Repaired 3MF file does not contain any volume"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:391
 msgid "Repaired 3MF file contains more than one volume"
-msgstr "Repaired 3MF file contains more than one volume"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:400
 msgid "Model repair finished"
-msgstr "Model repair finished"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:406
 msgid "Model repair canceled"
-msgstr "Model repair canceled"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:423
 msgid "Model repaired successfully"
-msgstr "Model repaired successfully"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:423
 #: src/slic3r/Utils/FixModelByWin10.cpp:426
 msgid "Model Repair by the Netfabb service"
-msgstr "Model Repair by the Netfabb service"
+msgstr ""
 
 #: src/slic3r/Utils/FixModelByWin10.cpp:426
 msgid "Model repair failed: \n"
-msgstr "Model repair failed: \n"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:35
 msgid "undefined error"
-msgstr "undefined error"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:37
 msgid "too many files"
-msgstr "too many files"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:39
 msgid "file too large"
-msgstr "file too large"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:41
 msgid "unsupported method"
-msgstr "unsupported method"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:43
 msgid "unsupported encryption"
-msgstr "unsupported encryption"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:45
 msgid "unsupported feature"
-msgstr "unsupported feature"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:47
 msgid "failed finding central directory"
-msgstr "failed finding central directory"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:49
 msgid "not a ZIP archive"
-msgstr "not a ZIP archive"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:51
 msgid "invalid header or archive is corrupted"
-msgstr "invalid header or archive is corrupted"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:53
 msgid "unsupported multidisk archive"
-msgstr "unsupported multidisk archive"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:55
 msgid "decompression failed or archive is corrupted"
-msgstr "decompression failed or archive is corrupted"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:57
 msgid "compression failed"
-msgstr "compression failed"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:59
 msgid "unexpected decompressed size"
-msgstr "unexpected decompressed size"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:61
 msgid "CRC-32 check failed"
-msgstr "CRC-32 check failed"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:63
 msgid "unsupported central directory size"
-msgstr "unsupported central directory size"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:65
 msgid "allocation failed"
-msgstr "allocation failed"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:67
 msgid "file open failed"
-msgstr "file open failed"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:69
 msgid "file create failed"
-msgstr "file create failed"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:71
 msgid "file write failed"
-msgstr "file write failed"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:73
 msgid "file read failed"
-msgstr "file read failed"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:75
 msgid "file close failed"
-msgstr "file close failed"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:77
 msgid "file seek failed"
-msgstr "file seek failed"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:79
 msgid "file stat failed"
-msgstr "file stat failed"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:81
 msgid "invalid parameter"
-msgstr "invalid parameter"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:83
 msgid "invalid filename"
-msgstr "invalid filename"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:85
 msgid "buffer too small"
-msgstr "buffer too small"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:87
 msgid "internal error"
-msgstr "internal error"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:89
 msgid "file not found"
-msgstr "file not found"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:91
 msgid "archive is too large"
-msgstr "archive is too large"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:93
 msgid "validation failed"
-msgstr "validation failed"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:95
 msgid "write calledback failed"
-msgstr "write calledback failed"
+msgstr ""
 
 #: src/libslic3r/Zipper.cpp:105
 msgid "Error with zip archive"
-msgstr "Error with zip archive"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2153
-msgid "Starting"
-msgstr "Starting"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2154
-msgid "Filtering"
-msgstr "Filtering"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2155
-msgid "Generate pinheads"
-msgstr "Generate pinheads"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2156
-msgid "Classification"
-msgstr "Classification"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2157
-msgid "Routing to ground"
-msgstr "Routing to ground"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2158
-msgid "Routing supports to model surface"
-msgstr "Routing supports to model surface"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2159
-msgid "Cascading pillars"
-msgstr "Cascading pillars"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2160
-msgid "Processing small holes"
-msgstr "Processing small holes"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2161
-msgid "Done"
-msgstr "Done"
-
-#: src/libslic3r/SLA/SLASupportTree.cpp:2162
-msgid "Abort"
-msgstr "Abort"
+msgstr ""
 
 #: src/libslic3r/Print.cpp:1136
 msgid "All objects are outside of the print volume."
-msgstr "All objects are outside of the print volume."
+msgstr ""
 
 #: src/libslic3r/Print.cpp:1165
 msgid "Some objects are too close; your extruder will collide with them."
-msgstr "Some objects are too close; your extruder will collide with them."
+msgstr ""
 
 #: src/libslic3r/Print.cpp:1180
 msgid ""
 "Some objects are too tall and cannot be printed without extruder collisions."
 msgstr ""
-"Some objects are too tall and cannot be printed without extruder collisions."
 
 #: src/libslic3r/Print.cpp:1190
 msgid "The Spiral Vase option can only be used when printing a single object."
-msgstr "The Spiral Vase option can only be used when printing a single object."
+msgstr ""
 
 #: src/libslic3r/Print.cpp:1192
 msgid ""
 "The Spiral Vase option can only be used when printing single material "
 "objects."
 msgstr ""
-"The Spiral Vase option can only be used when printing single material "
-"objects."
 
 #: src/libslic3r/Print.cpp:1198
 msgid ""
 "All extruders must have the same diameter for single extruder multimaterial "
 "printer."
 msgstr ""
-"All extruders must have the same diameter for single extruder multimaterial "
-"printer."
 
 #: src/libslic3r/Print.cpp:1203
 msgid ""
 "The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter "
 "and Repetier G-code flavors."
 msgstr ""
-"The Wipe Tower is currently only supported for the Marlin, RepRap/Sprinter "
-"and Repetier G-code flavors."
 
 #: src/libslic3r/Print.cpp:1205
 msgid ""
 "The Wipe Tower is currently only supported with the relative extruder "
 "addressing (use_relative_e_distances=1)."
 msgstr ""
-"The Wipe Tower is currently only supported with the relative extruder "
-"addressing (use_relative_e_distances=1)."
 
 #: src/libslic3r/Print.cpp:1226
 msgid ""
 "The Wipe Tower is only supported for multiple objects if they have equal "
 "layer heigths"
 msgstr ""
-"The Wipe Tower is only supported for multiple objects if they have equal "
-"layer heigths"
 
 #: src/libslic3r/Print.cpp:1228
 msgid ""
 "The Wipe Tower is only supported for multiple objects if they are printed "
 "over an equal number of raft layers"
 msgstr ""
-"The Wipe Tower is only supported for multiple objects if they are printed "
-"over an equal number of raft layers"
 
 #: src/libslic3r/Print.cpp:1230
 msgid ""
 "The Wipe Tower is only supported for multiple objects if they are printed "
 "with the same support_material_contact_distance"
 msgstr ""
-"The Wipe Tower is only supported for multiple objects if they are printed "
-"with the same support_material_contact_distance"
 
 #: src/libslic3r/Print.cpp:1232
 msgid ""
 "The Wipe Tower is only supported for multiple objects if they are sliced "
 "equally."
 msgstr ""
-"The Wipe Tower is only supported for multiple objects if they are sliced "
-"equally."
 
 #: src/libslic3r/Print.cpp:1261
 msgid ""
 "The Wipe tower is only supported if all objects have the same layer height "
 "profile"
 msgstr ""
-"The Wipe tower is only supported if all objects have the same layer height "
-"profile"
 
 #: src/libslic3r/Print.cpp:1271
 msgid "The supplied settings will cause an empty print."
-msgstr "The supplied settings will cause an empty print."
+msgstr ""
 
 #: src/libslic3r/Print.cpp:1288
 msgid ""
 "One or more object were assigned an extruder that the printer does not have."
 msgstr ""
-"One or more object were assigned an extruder that the printer does not have."
 
-#: src/libslic3r/Print.cpp:1297
+#: src/libslic3r/Print.cpp:1298
 msgid ""
 "Printing with multiple extruders of differing nozzle diameters. If support "
 "is to be printed with the current extruder (support_material_extruder == 0 "
 "or support_material_interface_extruder == 0), all nozzles have to be of the "
 "same diameter."
 msgstr ""
-"Printing with multiple extruders of differing nozzle diameters. If support "
-"is to be printed with the current extruder (support_material_extruder == 0 "
-"or support_material_interface_extruder == 0), all nozzles have to be of the "
-"same diameter."
 
-#: src/libslic3r/Print.cpp:1305
+#: src/libslic3r/Print.cpp:1306
 msgid ""
 "For the Wipe Tower to work with the soluble supports, the support layers "
 "need to be synchronized with the object layers."
 msgstr ""
-"For the Wipe Tower to work with the soluble supports, the support layers "
-"need to be synchronized with the object layers."
 
-#: src/libslic3r/Print.cpp:1309
+#: src/libslic3r/Print.cpp:1310
 msgid ""
 "The Wipe Tower currently supports the non-soluble supports only if they are "
 "printed with the current extruder without triggering a tool change. (both "
 "support_material_extruder and support_material_interface_extruder need to be "
 "set to 0)."
 msgstr ""
-"The Wipe Tower currently supports the non-soluble supports only if they are "
-"printed with the current extruder without triggering a tool change. (both "
-"support_material_extruder and support_material_interface_extruder need to be "
-"set to 0)."
 
-#: src/libslic3r/Print.cpp:1316
+#: src/libslic3r/Print.cpp:1317
 msgid "first_layer_height"
-msgstr "first_layer_height"
+msgstr ""
 
-#: src/libslic3r/Print.cpp:1331
+#: src/libslic3r/Print.cpp:1332
 msgid "First layer height can't be greater than nozzle diameter"
-msgstr "First layer height can't be greater than nozzle diameter"
+msgstr ""
 
-#: src/libslic3r/Print.cpp:1335
+#: src/libslic3r/Print.cpp:1336
 msgid "Layer height can't be greater than nozzle diameter"
-msgstr "Layer height can't be greater than nozzle diameter"
+msgstr ""
 
 #: src/libslic3r/SLAPrint.cpp:55
 msgid "Slicing model"
-msgstr "Slicing model"
+msgstr ""
 
-#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:801
+#: src/libslic3r/SLAPrint.cpp:56 src/libslic3r/SLAPrint.cpp:804
 msgid "Generating support points"
-msgstr "Generating support points"
+msgstr ""
 
 #: src/libslic3r/SLAPrint.cpp:57
 msgid "Generating support tree"
-msgstr "Generating support tree"
+msgstr ""
 
 #: src/libslic3r/SLAPrint.cpp:58
 msgid "Generating pad"
-msgstr "Generating pad"
+msgstr ""
 
 #: src/libslic3r/SLAPrint.cpp:59
 msgid "Slicing supports"
-msgstr "Slicing supports"
+msgstr ""
 
 #: src/libslic3r/SLAPrint.cpp:71
 msgid "Merging slices and calculating statistics"
-msgstr "Merging slices and calculating statistics"
+msgstr ""
 
 #: src/libslic3r/SLAPrint.cpp:72
 msgid "Rasterizing layers"
-msgstr "Rasterizing layers"
+msgstr ""
 
-#: src/libslic3r/SLAPrint.cpp:605
+#: src/libslic3r/SLAPrint.cpp:606
 msgid ""
 "Cannot proceed without support points! Add support points or disable support "
 "generation."
 msgstr ""
-"Cannot proceed without support points! Add support points or disable support "
-"generation."
 
-#: src/libslic3r/SLAPrint.cpp:617
+#: src/libslic3r/SLAPrint.cpp:618
 msgid "Elevation is too low for object."
-msgstr "Elevation is too low for object."
+msgstr ""
 
-#: src/libslic3r/SLAPrint.cpp:699
+#. TRN To be shown at the status bar on SLA slicing error.
+#: src/libslic3r/SLAPrint.cpp:701
 msgid "Slicing had to be stopped due to an internal error."
-msgstr "Slicing had to be stopped due to an internal error."
+msgstr ""
 
-#: src/libslic3r/SLAPrint.cpp:849 src/libslic3r/SLAPrint.cpp:859
-#: src/libslic3r/SLAPrint.cpp:907
+#: src/libslic3r/SLAPrint.cpp:852 src/libslic3r/SLAPrint.cpp:862
+#: src/libslic3r/SLAPrint.cpp:910
 msgid "Visualizing supports"
-msgstr "Visualizing supports"
+msgstr ""
 
-#: src/libslic3r/SLAPrint.cpp:1449
+#: src/libslic3r/SLAPrint.cpp:1452
 msgid "Slicing done"
-msgstr "Slicing done"
+msgstr ""
 
 #: src/libslic3r/PrintBase.cpp:65
 msgid "Failed processing of the output_filename_format template."
-msgstr "Failed processing of the output_filename_format template."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:42 src/libslic3r/PrintConfig.cpp:43
 msgid "Printer technology"
-msgstr "Printer technology"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:50
 msgid "Bed shape"
-msgstr "Bed shape"
+msgstr "Forme du plateau"
 
 #: src/libslic3r/PrintConfig.cpp:57
 msgid ""
 "This setting controls the height (and thus the total number) of the slices/"
 "layers. Thinner layers give better accuracy but take more time to print."
 msgstr ""
-"This setting controls the height (and thus the total number) of the slices/"
-"layers. Thinner layers give better accuracy but take more time to print."
+"Cette option contrôle l'épaisseur (et donc le nombre total) des couches. Des "
+"couches plus fines donneront une meilleure précision mais l'impression sera "
+"plus longue."
 
 #: src/libslic3r/PrintConfig.cpp:64
 msgid "Max print height"
-msgstr "Max print height"
+msgstr "Hauteur maximale d'impression"
 
 #: src/libslic3r/PrintConfig.cpp:65
 msgid ""
 "Set this to the maximum height that can be reached by your extruder while "
 "printing."
 msgstr ""
-"Set this to the maximum height that can be reached by your extruder while "
-"printing."
+"Réglez cette valeur sur la hauteur maximum que peut atteindre votre "
+"extrudeur au cours de l'impression."
 
 #: src/libslic3r/PrintConfig.cpp:71
 msgid "Slice gap closing radius"
-msgstr "Slice gap closing radius"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:73
 msgid ""
@@ -4679,37 +4643,30 @@ msgid ""
 "triangle mesh slicing. The gap closing operation may reduce the final print "
 "resolution, therefore it is advisable to keep the value reasonably low."
 msgstr ""
-"Cracks smaller than 2x gap closing radius are being filled during the "
-"triangle mesh slicing. The gap closing operation may reduce the final print "
-"resolution, therefore it is advisable to keep the value reasonably low."
 
 #: src/libslic3r/PrintConfig.cpp:81
 msgid "Hostname, IP or URL"
-msgstr "Hostname, IP or URL"
+msgstr "Nom d'hôte, IP ou URL"
 
 #: src/libslic3r/PrintConfig.cpp:82
 msgid ""
 "Slic3r can upload G-code files to a printer host. This field should contain "
 "the hostname, IP address or URL of the printer host instance."
 msgstr ""
-"Slic3r can upload G-code files to a printer host. This field should contain "
-"the hostname, IP address or URL of the printer host instance."
 
 #: src/libslic3r/PrintConfig.cpp:88
 msgid "API Key / Password"
-msgstr "API Key / Password"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:89
 msgid ""
 "Slic3r can upload G-code files to a printer host. This field should contain "
 "the API Key or the password required for authentication."
 msgstr ""
-"Slic3r can upload G-code files to a printer host. This field should contain "
-"the API Key or the password required for authentication."
 
 #: src/libslic3r/PrintConfig.cpp:111
 msgid "Avoid crossing perimeters"
-msgstr "Avoid crossing perimeters"
+msgstr "Éviter de traverser les périmètres"
 
 #: src/libslic3r/PrintConfig.cpp:112
 msgid ""
@@ -4717,25 +4674,27 @@ msgid ""
 "is mostly useful with Bowden extruders which suffer from oozing. This "
 "feature slows down both the print and the G-code generation."
 msgstr ""
-"Optimize travel moves in order to minimize the crossing of perimeters. This "
-"is mostly useful with Bowden extruders which suffer from oozing. This "
-"feature slows down both the print and the G-code generation."
+"Optimiser les déplacements afin de minimiser le franchissement de "
+"périmètres. Ceci est surtout utile avec les extruder Bowden qui sont sujets "
+"aux coulures. Cette fonctionnalité ralentit l'impression et la génération du "
+"G-code."
 
 #: src/libslic3r/PrintConfig.cpp:119 src/libslic3r/PrintConfig.cpp:1976
 msgid "Other layers"
-msgstr "Other layers"
+msgstr "Autres couches"
 
 #: src/libslic3r/PrintConfig.cpp:120
 msgid ""
 "Bed temperature for layers after the first one. Set this to zero to disable "
 "bed temperature control commands in the output."
 msgstr ""
-"Bed temperature for layers after the first one. Set this to zero to disable "
-"bed temperature control commands in the output."
+"Température du plateau pour les couches après la première. Mettez ceci à "
+"zéro pour désactiver les commandes de contrôle de température du plateau "
+"dans la sortie."
 
 #: src/libslic3r/PrintConfig.cpp:122
 msgid "Bed temperature"
-msgstr "Bed temperature"
+msgstr "Température du plateau"
 
 #: src/libslic3r/PrintConfig.cpp:129
 msgid ""
@@ -4743,13 +4702,13 @@ msgid ""
 "Note that you can use placeholder variables for all Slic3r settings as well "
 "as [layer_num] and [layer_z]."
 msgstr ""
-"This custom code is inserted at every layer change, right before the Z move. "
-"Note that you can use placeholder variables for all Slic3r settings as well "
-"as [layer_num] and [layer_z]."
+"Ce code personnalisé est inséré à chaque changement de couche, juste avant "
+"le mouvement en Z. Notez que vous pouvez utiliser des variables génériques "
+"pour tous les réglages de Slic3r de même que [layer_num] et [layer_z]."
 
 #: src/libslic3r/PrintConfig.cpp:139
 msgid "Between objects G-code"
-msgstr "Between objects G-code"
+msgstr "Entre le G-code des objets"
 
 #: src/libslic3r/PrintConfig.cpp:140
 msgid ""
@@ -4760,32 +4719,34 @@ msgid ""
 "variables for all Slic3r settings, so you can put a \"M109 "
 "S[first_layer_temperature]\" command wherever you want."
 msgstr ""
-"This code is inserted between objects when using sequential printing. By "
-"default extruder and bed temperature are reset using non-wait command; "
-"however if M104, M109, M140 or M190 are detected in this custom code, Slic3r "
-"will not add temperature commands. Note that you can use placeholder "
-"variables for all Slic3r settings, so you can put a \"M109 "
-"S[first_layer_temperature]\" command wherever you want."
+"Ce code est inséré entre des objets lorsque vous utilisez l'impression "
+"séquentielle. Par défaut la température de l'extrudeur et du plateau est "
+"réinitialisée et utilise la commande  sans-attente ; toutefois si des "
+"commandes M104, M109, M140 ou M190 sont détectées dans ce code personnalisé, "
+"Slic3r n'ajoutera pas de commandes de température. Notez que vous pouvez "
+"utiliser des variables génériques pour tous les réglages de Slic3r, donc "
+"vous pouvez entrer une commande \"M109S[first_layer_temperature]\" où vous "
+"le souhaitez."
 
 #: src/libslic3r/PrintConfig.cpp:150
 msgid "Number of solid layers to generate on bottom surfaces."
-msgstr "Number of solid layers to generate on bottom surfaces."
+msgstr "Nombre de couches solides à générer sur les surfaces inférieures."
 
 #: src/libslic3r/PrintConfig.cpp:151
 msgid "Bottom solid layers"
-msgstr "Bottom solid layers"
+msgstr "Couches solides inférieures"
 
 #: src/libslic3r/PrintConfig.cpp:156
 msgid "Bridge"
-msgstr "Bridge"
+msgstr "Pont"
 
 #: src/libslic3r/PrintConfig.cpp:157
 msgid ""
 "This is the acceleration your printer will use for bridges. Set zero to "
 "disable acceleration control for bridges."
 msgstr ""
-"This is the acceleration your printer will use for bridges. Set zero to "
-"disable acceleration control for bridges."
+"L'accélération qui sera utilisée par votre imprimante pour les ponts. Régler "
+"sur zéro pour désactiver l'accélération pour les ponts."
 
 #: src/libslic3r/PrintConfig.cpp:159 src/libslic3r/PrintConfig.cpp:302
 #: src/libslic3r/PrintConfig.cpp:814 src/libslic3r/PrintConfig.cpp:935
@@ -4796,7 +4757,7 @@ msgstr "mm/s²"
 
 #: src/libslic3r/PrintConfig.cpp:165
 msgid "Bridging angle"
-msgstr "Bridging angle"
+msgstr "Angle du pont"
 
 #: src/libslic3r/PrintConfig.cpp:167
 msgid ""
@@ -4804,35 +4765,36 @@ msgid ""
 "calculated automatically. Otherwise the provided angle will be used for all "
 "bridges. Use 180° for zero angle."
 msgstr ""
-"Bridging angle override. If left to zero, the bridging angle will be "
-"calculated automatically. Otherwise the provided angle will be used for all "
-"bridges. Use 180° for zero angle."
+"Contournement de l'angle du pont. Si laissé à zéro, l'angle du pont sera "
+"calculé automatiquement. Sinon, l'angle fourni sera utilisé pour tous les "
+"ponts. Utilisez 180° pour un angle nul."
 
 #: src/libslic3r/PrintConfig.cpp:170 src/libslic3r/PrintConfig.cpp:732
 #: src/libslic3r/PrintConfig.cpp:1569 src/libslic3r/PrintConfig.cpp:1579
 #: src/libslic3r/PrintConfig.cpp:1807 src/libslic3r/PrintConfig.cpp:1961
-#: src/libslic3r/PrintConfig.cpp:2459
+#: src/libslic3r/PrintConfig.cpp:2461
 msgid "°"
 msgstr "°"
 
 #: src/libslic3r/PrintConfig.cpp:176
 msgid "Bridges fan speed"
-msgstr "Bridges fan speed"
+msgstr "Vitesse du ventilateur pour les ponts"
 
 #: src/libslic3r/PrintConfig.cpp:177
 msgid "This fan speed is enforced during all bridges and overhangs."
-msgstr "This fan speed is enforced during all bridges and overhangs."
+msgstr ""
+"Cette vitesse de ventilateur sera utilisée pour les ponts et les surplombs."
 
 #: src/libslic3r/PrintConfig.cpp:178 src/libslic3r/PrintConfig.cpp:744
 #: src/libslic3r/PrintConfig.cpp:1153 src/libslic3r/PrintConfig.cpp:1216
 #: src/libslic3r/PrintConfig.cpp:1461 src/libslic3r/PrintConfig.cpp:2258
-#: src/libslic3r/PrintConfig.cpp:2498
+#: src/libslic3r/PrintConfig.cpp:2500
 msgid "%"
 msgstr "%"
 
 #: src/libslic3r/PrintConfig.cpp:185
 msgid "Bridge flow ratio"
-msgstr "Bridge flow ratio"
+msgstr "Ratio de flux pour les ponts"
 
 #: src/libslic3r/PrintConfig.cpp:187
 msgid ""
@@ -4841,18 +4803,18 @@ msgid ""
 "settings are usually good and you should experiment with cooling (use a fan) "
 "before tweaking this."
 msgstr ""
-"This factor affects the amount of plastic for bridging. You can decrease it "
-"slightly to pull the extrudates and prevent sagging, although default "
-"settings are usually good and you should experiment with cooling (use a fan) "
-"before tweaking this."
+"Ce facteur affecte la quantité de plastique utilisée pour les ponts. Vous "
+"pouvez le diminuer légèrement pour éviter l'affaissement. La valeur par "
+"défaut est généralement suffisante et vous devriez expérimenter le "
+"refroidissement (utiliser un ventilateur) avant de modifier ceci."
 
 #: src/libslic3r/PrintConfig.cpp:197
 msgid "Bridges"
-msgstr "Bridges"
+msgstr "Ponts"
 
 #: src/libslic3r/PrintConfig.cpp:199
 msgid "Speed for printing bridges."
-msgstr "Speed for printing bridges."
+msgstr "Vitesse d'impression des ponts."
 
 #: src/libslic3r/PrintConfig.cpp:200 src/libslic3r/PrintConfig.cpp:576
 #: src/libslic3r/PrintConfig.cpp:584 src/libslic3r/PrintConfig.cpp:593
@@ -4869,19 +4831,19 @@ msgstr "mm/s"
 
 #: src/libslic3r/PrintConfig.cpp:207
 msgid "Brim width"
-msgstr "Brim width"
+msgstr "Largeur de la bordure"
 
 #: src/libslic3r/PrintConfig.cpp:208
 msgid ""
 "Horizontal width of the brim that will be printed around each object on the "
 "first layer."
 msgstr ""
-"Horizontal width of the brim that will be printed around each object on the "
-"first layer."
+"Largeur horizontale de la bordure qui sera imprimée autour de chaque objet "
+"sur la première couche."
 
 #: src/libslic3r/PrintConfig.cpp:215
 msgid "Clip multi-part objects"
-msgstr "Clip multi-part objects"
+msgstr "Dissocier les objets multi-pièces"
 
 #: src/libslic3r/PrintConfig.cpp:216
 msgid ""
@@ -4889,21 +4851,22 @@ msgid ""
 "the overlapping object parts one by the other (2nd part will be clipped by "
 "the 1st, 3rd part will be clipped by the 1st and 2nd etc)."
 msgstr ""
-"When printing multi-material objects, this settings will make slic3r to clip "
-"the overlapping object parts one by the other (2nd part will be clipped by "
-"the 1st, 3rd part will be clipped by the 1st and 2nd etc)."
+"Lorsque vous imprimez des objets multi-matériaux, ce réglage fera en sorte "
+"que Slic3r rattache ensemble les parties de l'objet qui se superposent (la "
+"2e partie sera rattachée à la 1ere, la 3e partie sera rattachée à la 1ere et "
+"la 2e, etc...)."
 
 #: src/libslic3r/PrintConfig.cpp:223
 msgid "Colorprint height"
-msgstr "Colorprint height"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:224
 msgid "Heights at which a filament change is to occur. "
-msgstr "Heights at which a filament change is to occur. "
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:234
 msgid "Compatible printers condition"
-msgstr "Compatible printers condition"
+msgstr "Condition de compatibilité des imprimantes"
 
 #: src/libslic3r/PrintConfig.cpp:235
 msgid ""
@@ -4911,13 +4874,13 @@ msgid ""
 "profile. If this expression evaluates to true, this profile is considered "
 "compatible with the active printer profile."
 msgstr ""
-"A boolean expression using the configuration values of an active printer "
-"profile. If this expression evaluates to true, this profile is considered "
-"compatible with the active printer profile."
+"Une expression booléenne utilisant les valeurs de configuration d'un profil "
+"d'imprimante actif. Si cette expression est évaluée comme vraie, ce profil "
+"est considéré comme compatible avec le profil d'imprimante actif."
 
 #: src/libslic3r/PrintConfig.cpp:249
 msgid "Compatible print profiles condition"
-msgstr "Compatible print profiles condition"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:250
 msgid ""
@@ -4925,13 +4888,10 @@ msgid ""
 "profile. If this expression evaluates to true, this profile is considered "
 "compatible with the active print profile."
 msgstr ""
-"A boolean expression using the configuration values of an active print "
-"profile. If this expression evaluates to true, this profile is considered "
-"compatible with the active print profile."
 
 #: src/libslic3r/PrintConfig.cpp:267
 msgid "Complete individual objects"
-msgstr "Complete individual objects"
+msgstr "Compléter les objets individuels"
 
 #: src/libslic3r/PrintConfig.cpp:268
 msgid ""
@@ -4940,39 +4900,44 @@ msgid ""
 "This feature is useful to avoid the risk of ruined prints. Slic3r should "
 "warn and prevent you from extruder collisions, but beware."
 msgstr ""
-"When printing multiple objects or copies, this feature will complete each "
-"object before moving onto next one (and starting it from its bottom layer). "
-"This feature is useful to avoid the risk of ruined prints. Slic3r should "
-"warn and prevent you from extruder collisions, but beware."
+"Lorsque vous imprimez plusieurs objets ou copies, ce réglage permet de "
+"terminer un objet avant de passer au suivant (en repartant de sa première "
+"couche). Cette fonction est utile pour éviter les risques d'impressions "
+"gâchées. Slic3r doit vous avertir et éviter les collisions entre les objets "
+"et l'extrudeur, mais soyez vigilant."
 
 #: src/libslic3r/PrintConfig.cpp:276
 msgid "Enable auto cooling"
-msgstr "Enable auto cooling"
+msgstr "Activer le refroidissement automatique"
 
 #: src/libslic3r/PrintConfig.cpp:277
 msgid ""
 "This flag enables the automatic cooling logic that adjusts print speed and "
 "fan speed according to layer printing time."
 msgstr ""
-"This flag enables the automatic cooling logic that adjusts print speed and "
-"fan speed according to layer printing time."
+"Cette option active la logique de refroidissement automatique, qui ajuste la "
+"vitesse d'impression et celle du ventilateur en fonction du temps "
+"d'impression de la couche."
 
 #: src/libslic3r/PrintConfig.cpp:282
 msgid "Cooling tube position"
-msgstr "Cooling tube position"
+msgstr "Position du tube de refroidissement"
 
 #: src/libslic3r/PrintConfig.cpp:283
 msgid "Distance of the center-point of the cooling tube from the extruder tip "
 msgstr ""
-"Distance of the center-point of the cooling tube from the extruder tip "
+"Distance entre le point central du tube de refroidissement et la pointe de "
+"l'extrudeur. "
 
 #: src/libslic3r/PrintConfig.cpp:290
 msgid "Cooling tube length"
-msgstr "Cooling tube length"
+msgstr "Longueur du tube de refroidissement"
 
 #: src/libslic3r/PrintConfig.cpp:291
 msgid "Length of the cooling tube to limit space for cooling moves inside it "
-msgstr "Length of the cooling tube to limit space for cooling moves inside it "
+msgstr ""
+"Longueur du tube de refroidissement pour limiter l'espace pour les "
+"déplacements de refroidissement à l'intérieur de celui-ci "
 
 #: src/libslic3r/PrintConfig.cpp:299
 msgid ""
@@ -4980,13 +4945,13 @@ msgid ""
 "specific acceleration values are used (perimeter/infill). Set zero to "
 "prevent resetting acceleration at all."
 msgstr ""
-"This is the acceleration your printer will be reset to after the role-"
-"specific acceleration values are used (perimeter/infill). Set zero to "
-"prevent resetting acceleration at all."
+"Accélération à laquelle votre imprimante sera réinitialisée suite à une "
+"modification de l'accélération des fonctions spécifiques (périmètre/"
+"remplissage). Régler sur zéro pour ne pas réinitialiser l'accélération."
 
 #: src/libslic3r/PrintConfig.cpp:308
 msgid "Default filament profile"
-msgstr "Default filament profile"
+msgstr "Profil de filament par défaut"
 
 #: src/libslic3r/PrintConfig.cpp:309
 msgid ""
@@ -4994,83 +4959,85 @@ msgid ""
 "selection of the current printer profile, this filament profile will be "
 "activated."
 msgstr ""
-"Default filament profile associated with the current printer profile. On "
-"selection of the current printer profile, this filament profile will be "
-"activated."
+"Profil de filament par défaut associé au profil d'imprimante courant. En "
+"sélectionnant le profil d'imprimante courant, ce profil de filament sera "
+"activé."
 
 #: src/libslic3r/PrintConfig.cpp:315
 msgid "Default print profile"
-msgstr "Default print profile"
+msgstr "Profil de filament par défaut"
 
-#: src/libslic3r/PrintConfig.cpp:316 src/libslic3r/PrintConfig.cpp:2337
-#: src/libslic3r/PrintConfig.cpp:2348
+#: src/libslic3r/PrintConfig.cpp:316 src/libslic3r/PrintConfig.cpp:2339
+#: src/libslic3r/PrintConfig.cpp:2350
 msgid ""
 "Default print profile associated with the current printer profile. On "
 "selection of the current printer profile, this print profile will be "
 "activated."
 msgstr ""
-"Default print profile associated with the current printer profile. On "
-"selection of the current printer profile, this print profile will be "
-"activated."
+"Profil de filament par défaut associé au profil d'imprimante courant. En "
+"sélectionnant le profil d'imprimante courant, ce profil de filament sera "
+"activé."
 
 #: src/libslic3r/PrintConfig.cpp:322
 msgid "Disable fan for the first"
-msgstr "Disable fan for the first"
+msgstr "Désactiver le ventilateur pour le(s) première(s)"
 
 #: src/libslic3r/PrintConfig.cpp:323
 msgid ""
 "You can set this to a positive value to disable fan at all during the first "
 "layers, so that it does not make adhesion worse."
 msgstr ""
-"You can set this to a positive value to disable fan at all during the first "
-"layers, so that it does not make adhesion worse."
+"Vous pouvez régler ce paramètre sur une valeur positive pour désactiver "
+"complètement le ventilateur pendant les premières couches, afin de ne pas "
+"rendre l'adhérence plus difficile."
 
 #: src/libslic3r/PrintConfig.cpp:325 src/libslic3r/PrintConfig.cpp:945
 #: src/libslic3r/PrintConfig.cpp:1434 src/libslic3r/PrintConfig.cpp:1619
 #: src/libslic3r/PrintConfig.cpp:1680 src/libslic3r/PrintConfig.cpp:1843
 #: src/libslic3r/PrintConfig.cpp:1888
 msgid "layers"
-msgstr "layers"
+msgstr "couches"
 
 #: src/libslic3r/PrintConfig.cpp:332
 msgid "Don't support bridges"
-msgstr "Don't support bridges"
+msgstr "Ne pas supporter les ponts"
 
 #: src/libslic3r/PrintConfig.cpp:334
 msgid ""
 "Experimental option for preventing support material from being generated "
 "under bridged areas."
 msgstr ""
-"Experimental option for preventing support material from being generated "
-"under bridged areas."
+"Option expérimentale pour empêcher la génération de support sous les ponts."
 
 #: src/libslic3r/PrintConfig.cpp:340
 msgid "Distance between copies"
-msgstr "Distance between copies"
+msgstr "Distance entre les copies"
 
 #: src/libslic3r/PrintConfig.cpp:341
 msgid "Distance used for the auto-arrange feature of the plater."
-msgstr "Distance used for the auto-arrange feature of the plater."
+msgstr "Distance utilisée par la fonction d'agencement automatique du plateau."
 
 #: src/libslic3r/PrintConfig.cpp:348
 msgid "Elephant foot compensation"
-msgstr "Elephant foot compensation"
+msgstr "Compensation de l'effet patte d'éléphant"
 
 #: src/libslic3r/PrintConfig.cpp:350
 msgid ""
 "The first layer will be shrunk in the XY plane by the configured value to "
 "compensate for the 1st layer squish aka an Elephant Foot effect."
 msgstr ""
-"The first layer will be shrunk in the XY plane by the configured value to "
-"compensate for the 1st layer squish aka an Elephant Foot effect."
+"La première couche sera réduite sur le plan XY selon la valeur configurée "
+"afin de compenser l'écrasement de la première couche également connu sous le "
+"nom d'effet Pied d'Éléphant."
 
 #: src/libslic3r/PrintConfig.cpp:359
 msgid ""
 "This end procedure is inserted at the end of the output file. Note that you "
 "can use placeholder variables for all Slic3r settings."
 msgstr ""
-"This end procedure is inserted at the end of the output file. Note that you "
-"can use placeholder variables for all Slic3r settings."
+"Cette procédure de fin est insérée à la fin du fichier de sortie. Notez que "
+"vous pouvez utiliser des variables génériques pour tous les réglages de "
+"Slic3r."
 
 #: src/libslic3r/PrintConfig.cpp:369
 msgid ""
@@ -5079,71 +5046,68 @@ msgid ""
 "Slic3r settings. If you have multiple extruders, the gcode is processed in "
 "extruder order."
 msgstr ""
-"This end procedure is inserted at the end of the output file, before the "
-"printer end gcode. Note that you can use placeholder variables for all "
-"Slic3r settings. If you have multiple extruders, the gcode is processed in "
-"extruder order."
+"Cette procédure de fin est insérée à la fin du fichier de sortie, avant le "
+"gcode de fin de l'imprimante. Notez que vous pouvez  utiliser des variables "
+"génériques pour tous les réglages de Slic3r. Si vous avez plusieurs "
+"extrudeurs, le gcode sera traité suivant l'ordre des extrudeurs."
 
 #: src/libslic3r/PrintConfig.cpp:379
 msgid "Ensure vertical shell thickness"
-msgstr "Ensure vertical shell thickness"
+msgstr "S'assurer de l'épaisseur de la coque verticale"
 
 #: src/libslic3r/PrintConfig.cpp:381
 msgid ""
 "Add solid infill near sloping surfaces to guarantee the vertical shell "
 "thickness (top+bottom solid layers)."
 msgstr ""
-"Add solid infill near sloping surfaces to guarantee the vertical shell "
-"thickness (top+bottom solid layers)."
+"Ajouter un remplissage plein à proximité des surfaces inclinées pour "
+"garantir une épaisseur de coque verticale (couches solides supérieures"
+"+inférieures)."
 
 #: src/libslic3r/PrintConfig.cpp:387
 msgid "Top fill pattern"
-msgstr "Top fill pattern"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:389
 msgid ""
 "Fill pattern for top infill. This only affects the top visible layer, and "
 "not its adjacent solid shells."
 msgstr ""
-"Fill pattern for top infill. This only affects the top visible layer, and "
-"not its adjacent solid shells."
 
 #: src/libslic3r/PrintConfig.cpp:397 src/libslic3r/PrintConfig.cpp:795
 #: src/libslic3r/PrintConfig.cpp:1921
 msgid "Rectilinear"
-msgstr "Rectilinear"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:398 src/libslic3r/PrintConfig.cpp:801
 msgid "Concentric"
-msgstr "Concentric"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:399 src/libslic3r/PrintConfig.cpp:805
 msgid "Hilbert Curve"
-msgstr "Hilbert Curve"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:400 src/libslic3r/PrintConfig.cpp:806
 msgid "Archimedean Chords"
-msgstr "Archimedean Chords"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:401 src/libslic3r/PrintConfig.cpp:807
 msgid "Octagram Spiral"
-msgstr "Octagram Spiral"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:408
 msgid "Bottom fill pattern"
-msgstr "Bottom fill pattern"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:409
 msgid ""
 "Fill pattern for bottom infill. This only affects the bottom external "
 "visible layer, and not its adjacent solid shells."
 msgstr ""
-"Fill pattern for bottom infill. This only affects the bottom external "
-"visible layer, and not its adjacent solid shells."
 
 #: src/libslic3r/PrintConfig.cpp:414 src/libslic3r/PrintConfig.cpp:424
 msgid "External perimeters"
-msgstr "External perimeters"
+msgstr "Périmètres externes"
 
 #: src/libslic3r/PrintConfig.cpp:416
 msgid ""
@@ -5152,17 +5116,19 @@ msgid ""
 "otherwise 1.125 x nozzle diameter will be used. If expressed as percentage "
 "(for example 200%), it will be computed over layer height."
 msgstr ""
-"Set this to a non-zero value to set a manual extrusion width for external "
-"perimeters. If left zero, default extrusion width will be used if set, "
-"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage "
-"(for example 200%), it will be computed over layer height."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la "
+"largeur d’extrusion pour les périmètres extérieurs. Si la valeur reste sur "
+"zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon la "
+"valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est exprimée "
+"en pourcentage (par exemple : 200%), elle sera calculée par rapport à la "
+"hauteur de couche."
 
 #: src/libslic3r/PrintConfig.cpp:419 src/libslic3r/PrintConfig.cpp:834
 #: src/libslic3r/PrintConfig.cpp:966 src/libslic3r/PrintConfig.cpp:1353
 #: src/libslic3r/PrintConfig.cpp:1691 src/libslic3r/PrintConfig.cpp:1864
 #: src/libslic3r/PrintConfig.cpp:2022
 msgid "mm or % (leave 0 for default)"
-msgstr "mm or % (leave 0 for default)"
+msgstr "mm ou % (laissez à 0 pour la valeur par défaut)"
 
 #: src/libslic3r/PrintConfig.cpp:426
 msgid ""
@@ -5170,42 +5136,43 @@ msgid ""
 "visible ones). If expressed as percentage (for example: 80%) it will be "
 "calculated on the perimeters speed setting above. Set to zero for auto."
 msgstr ""
-"This separate setting will affect the speed of external perimeters (the "
-"visible ones). If expressed as percentage (for example: 80%) it will be "
-"calculated on the perimeters speed setting above. Set to zero for auto."
+"Ce réglage distinct affectera la vitesse des périmètres extérieurs (ceux qui "
+"sont visibles). Si cette valeur est exprimée en pourcentage (par exemple: "
+"80%) elle sera calculée d'après le réglage de la vitesse de périmètre "
+"susmentionnée. Réglez sur zéro pour un ajustement automatique."
 
 #: src/libslic3r/PrintConfig.cpp:429 src/libslic3r/PrintConfig.cpp:855
 #: src/libslic3r/PrintConfig.cpp:1650 src/libslic3r/PrintConfig.cpp:1701
 #: src/libslic3r/PrintConfig.cpp:1907 src/libslic3r/PrintConfig.cpp:2034
 msgid "mm/s or %"
-msgstr "mm/s or %"
+msgstr "mm/s ou %"
 
 #: src/libslic3r/PrintConfig.cpp:436
 msgid "External perimeters first"
-msgstr "External perimeters first"
+msgstr "Périmètres externes en premier"
 
 #: src/libslic3r/PrintConfig.cpp:438
 msgid ""
 "Print contour perimeters from the outermost one to the innermost one instead "
 "of the default inverse order."
 msgstr ""
-"Print contour perimeters from the outermost one to the innermost one instead "
-"of the default inverse order."
+"Imprimer les périmètres de l'extérieur vers l'intérieur au lieu de l'ordre "
+"par défaut qui est inversé."
 
 #: src/libslic3r/PrintConfig.cpp:444
 msgid "Extra perimeters if needed"
-msgstr "Extra perimeters if needed"
+msgstr "Périmètres supplémentaires si nécessaire"
 
 #: src/libslic3r/PrintConfig.cpp:446
-#, no-c-format
+#, fuzzy, c-format
 msgid ""
 "Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r "
 "keeps adding perimeters, until more than 70% of the loop immediately above "
 "is supported."
 msgstr ""
-"Add more perimeters when needed for avoiding gaps in sloping walls. Slic3r "
-"keeps adding perimeters, until more than 70% of the loop immediately above "
-"is supported."
+"Ajouter plus de périmètres si nécessaire pour éviter des trous dans les "
+"parois inclinées. Slic3r ajoute des périmètres, jusqu'à ce que plus de "
+"70% de la boucle immédiatement au-dessus soit supportée."
 
 #: src/libslic3r/PrintConfig.cpp:456
 msgid ""
@@ -5213,9 +5180,9 @@ msgid ""
 "This value overrides perimeter and infill extruders, but not the support "
 "extruders."
 msgstr ""
-"The extruder to use (unless more specific extruder settings are specified). "
-"This value overrides perimeter and infill extruders, but not the support "
-"extruders."
+"L'extrudeur à utiliser (à moins que d'autres réglages d'extrudeur plus "
+"spécifiques soient spécifiés). Cette valeur se substitue aux extrudeurs de "
+"périmètre et de remplissage, mais pas aux extrudeurs de support."
 
 #: src/libslic3r/PrintConfig.cpp:468
 msgid ""
@@ -5224,14 +5191,15 @@ msgid ""
 "cylinder around your extruder, and it represents the maximum depth the "
 "extruder can peek before colliding with other printed objects."
 msgstr ""
-"Set this to the vertical distance between your nozzle tip and (usually) the "
-"X carriage rods. In other words, this is the height of the clearance "
-"cylinder around your extruder, and it represents the maximum depth the "
-"extruder can peek before colliding with other printed objects."
+"Paramétrez ceci avec la distance verticale entre la pointe de la buse et "
+"(habituellement) les tiges du chariot de l'axe X. En d'autres termes, il "
+"s'agit de la hauteur du cylindre de dégagement autour de l'extrudeur, et "
+"elle représente la profondeur maximum à laquelle peut descendre l'extrudeur "
+"avant d'entrer en collision avec d'autres objets imprimés."
 
 #: src/libslic3r/PrintConfig.cpp:478
 msgid "Radius"
-msgstr "Radius"
+msgstr "Rayon"
 
 #: src/libslic3r/PrintConfig.cpp:479
 msgid ""
@@ -5239,21 +5207,24 @@ msgid ""
 "not centered, choose the largest value for safety. This setting is used to "
 "check for collisions and to display the graphical preview in the plater."
 msgstr ""
-"Set this to the clearance radius around your extruder. If the extruder is "
-"not centered, choose the largest value for safety. This setting is used to "
-"check for collisions and to display the graphical preview in the plater."
+"Paramétrez ceci avec le rayon de dégagement autour de l'extrudeur. Si "
+"l'extrudeur n'est pas centré, choisissez la plus grande valeur par sécurité. "
+"Ce réglage est utilisé pour vérifier les collisions et afficher l'aperçu "
+"graphique sur le plateau."
 
 #: src/libslic3r/PrintConfig.cpp:489
 msgid "Extruder Color"
-msgstr "Extruder Color"
+msgstr "Couleur de l'extrudeur"
 
 #: src/libslic3r/PrintConfig.cpp:490 src/libslic3r/PrintConfig.cpp:550
 msgid "This is only used in the Slic3r interface as a visual help."
-msgstr "This is only used in the Slic3r interface as a visual help."
+msgstr ""
+"Ceci est uniquement utilisé dans l'interface de Slic3r comme indication "
+"visuelle."
 
 #: src/libslic3r/PrintConfig.cpp:496
 msgid "Extruder offset"
-msgstr "Extruder offset"
+msgstr "Décalage de l'extrudeur"
 
 #: src/libslic3r/PrintConfig.cpp:497
 msgid ""
@@ -5262,26 +5233,26 @@ msgid ""
 "of each extruder with respect to the first one. It expects positive "
 "coordinates (they will be subtracted from the XY coordinate)."
 msgstr ""
-"If your firmware doesn't handle the extruder displacement you need the G-"
-"code to take it into account. This option lets you specify the displacement "
-"of each extruder with respect to the first one. It expects positive "
-"coordinates (they will be subtracted from the XY coordinate)."
+"Si le firmware de votre imprimante ne gère pas le décalage de l'extrudeur, "
+"c'est au G-code d'en tenir compte. Cette option vous permet de spécifier le "
+"décalage de chaque extrudeur par rapport au premier. Des valeurs positives "
+"sont attendues (elles seront soustraites des coordonnées XY)."
 
 #: src/libslic3r/PrintConfig.cpp:506
 msgid "Extrusion axis"
-msgstr "Extrusion axis"
+msgstr "Axe d'extrusion"
 
 #: src/libslic3r/PrintConfig.cpp:507
 msgid ""
 "Use this option to set the axis letter associated to your printer's extruder "
 "(usually E but some printers use A)."
 msgstr ""
-"Use this option to set the axis letter associated to your printer's extruder "
-"(usually E but some printers use A)."
+"Utiliser cette option pour indiquer la lettre utilisée par l'extrudeur de "
+"votre imprimante (habituellement E, mais certaines imprimantes utilisent A)."
 
 #: src/libslic3r/PrintConfig.cpp:512
 msgid "Extrusion multiplier"
-msgstr "Extrusion multiplier"
+msgstr "Multiplicateur d'extrusion"
 
 #: src/libslic3r/PrintConfig.cpp:513
 msgid ""
@@ -5290,14 +5261,15 @@ msgid ""
 "Usual values are between 0.9 and 1.1. If you think you need to change this "
 "more, check filament diameter and your firmware E steps."
 msgstr ""
-"This factor changes the amount of flow proportionally. You may need to tweak "
-"this setting to get nice surface finish and correct single wall widths. "
-"Usual values are between 0.9 and 1.1. If you think you need to change this "
-"more, check filament diameter and your firmware E steps."
+"Ce facteur modifie proportionnellement le flux d'extrusion. Vous pouvez "
+"avoir besoin de modifier ceci afin d'obtenir un rendu de surface net et une "
+"largeur correcte pour les murs uniques. Les valeurs habituelles vont de 0.9 "
+"à 1.1. Si vous pensez devoir changer davantage cette valeur, vérifiez le "
+"diamètre de votre filament et les E Steps dans le firmware."
 
 #: src/libslic3r/PrintConfig.cpp:521
 msgid "Default extrusion width"
-msgstr "Default extrusion width"
+msgstr "Largeur d'extrusion par défaut"
 
 #: src/libslic3r/PrintConfig.cpp:523
 msgid ""
@@ -5307,31 +5279,33 @@ msgid ""
 "expressed as percentage (for example: 230%), it will be computed over layer "
 "height."
 msgstr ""
-"Set this to a non-zero value to allow a manual extrusion width. If left to "
-"zero, Slic3r derives extrusion widths from the nozzle diameter (see the "
-"tooltips for perimeter extrusion width, infill extrusion width etc). If "
-"expressed as percentage (for example: 230%), it will be computed over layer "
-"height."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la "
+"largeur d’extrusion. Si la valeur reste sur zéro, Slic3r calcule la largeur "
+"d’extrusion en se basant sur le diamètre de la buse (voir l’info-bulle "
+"concernant la largeur d’extrusion du périmètre, la largeur d’extrusion du "
+"remplissage, etc…). Si la valeur est exprimée en pourcentage (par exemple : "
+"230%), elle sera calculée par rapport à la hauteur de couche."
 
 #: src/libslic3r/PrintConfig.cpp:527
 msgid "mm or % (leave 0 for auto)"
-msgstr "mm or % (leave 0 for auto)"
+msgstr "mm ou % (laissez à 0 pour le mode automatique)"
 
 #: src/libslic3r/PrintConfig.cpp:532
 msgid "Keep fan always on"
-msgstr "Keep fan always on"
+msgstr "Garder le ventilateur toujours actif"
 
 #: src/libslic3r/PrintConfig.cpp:533
 msgid ""
 "If this is enabled, fan will never be disabled and will be kept running at "
 "least at its minimum speed. Useful for PLA, harmful for ABS."
 msgstr ""
-"If this is enabled, fan will never be disabled and will be kept running at "
-"least at its minimum speed. Useful for PLA, harmful for ABS."
+"Si ceci est activé, le ventilateur ne sera jamais désactivé et sera maintenu "
+"au moins à sa vitesse minimum. Utile pour le PLA, mais risqué pour l'ABS."
 
 #: src/libslic3r/PrintConfig.cpp:538
 msgid "Enable fan if layer print time is below"
-msgstr "Enable fan if layer print time is below"
+msgstr ""
+"Activer le ventilateur si le temps d'impression de la couche est inférieur à"
 
 #: src/libslic3r/PrintConfig.cpp:539
 msgid ""
@@ -5339,29 +5313,29 @@ msgid ""
 "enabled and its speed will be calculated by interpolating the minimum and "
 "maximum speeds."
 msgstr ""
-"If layer print time is estimated below this number of seconds, fan will be "
-"enabled and its speed will be calculated by interpolating the minimum and "
-"maximum speeds."
+"Si le temps d'impression estimé de la couche est inférieur à ce nombre de "
+"secondes, le ventilateur sera activé et sa vitesse calculée par "
+"interpolation des vitesses minimum et maximum."
 
 #: src/libslic3r/PrintConfig.cpp:541 src/libslic3r/PrintConfig.cpp:1637
 msgid "approximate seconds"
-msgstr "approximate seconds"
+msgstr "secondes approximatives"
 
 #: src/libslic3r/PrintConfig.cpp:549
 msgid "Color"
-msgstr "Color"
+msgstr "Couleur"
 
 #: src/libslic3r/PrintConfig.cpp:555
 msgid "Filament notes"
-msgstr "Filament notes"
+msgstr "Notes du filament"
 
 #: src/libslic3r/PrintConfig.cpp:556
 msgid "You can put your notes regarding the filament here."
-msgstr "You can put your notes regarding the filament here."
+msgstr "Vous pouvez saisir vos remarques concernant le filament ici."
 
 #: src/libslic3r/PrintConfig.cpp:564 src/libslic3r/PrintConfig.cpp:1181
 msgid "Max volumetric speed"
-msgstr "Max volumetric speed"
+msgstr "Vitesse volumétrique maximale"
 
 #: src/libslic3r/PrintConfig.cpp:565
 msgid ""
@@ -5369,9 +5343,9 @@ msgid ""
 "volumetric speed of a print to the minimum of print and filament volumetric "
 "speed. Set to zero for no limit."
 msgstr ""
-"Maximum volumetric speed allowed for this filament. Limits the maximum "
-"volumetric speed of a print to the minimum of print and filament volumetric "
-"speed. Set to zero for no limit."
+"Vitesse volumétrique maximale autorisée pour ce filament. Limite la vitesse "
+"volumétrique d'une impression au minimum des vitesses volumétriques "
+"d'impression et de filament. Mettez à zéro pour enlever la limite."
 
 #: src/libslic3r/PrintConfig.cpp:568 src/libslic3r/PrintConfig.cpp:1184
 msgid "mm³/s"
@@ -5379,45 +5353,44 @@ msgstr "mm³/s"
 
 #: src/libslic3r/PrintConfig.cpp:574
 msgid "Loading speed"
-msgstr "Loading speed"
+msgstr "Vitesse de chargement"
 
 #: src/libslic3r/PrintConfig.cpp:575
 msgid "Speed used for loading the filament on the wipe tower. "
-msgstr "Speed used for loading the filament on the wipe tower. "
+msgstr "Vitesse utilisée pour charger le filament sur la tour de nettoyage. "
 
 #: src/libslic3r/PrintConfig.cpp:582
 msgid "Loading speed at the start"
-msgstr "Loading speed at the start"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:583
 msgid "Speed used at the very beginning of loading phase. "
-msgstr "Speed used at the very beginning of loading phase. "
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:590
 msgid "Unloading speed"
-msgstr "Unloading speed"
+msgstr "Vitesse de déchargement"
 
 #: src/libslic3r/PrintConfig.cpp:591
 msgid ""
 "Speed used for unloading the filament on the wipe tower (does not affect  "
 "initial part of unloading just after ramming). "
 msgstr ""
-"Speed used for unloading the filament on the wipe tower (does not affect  "
-"initial part of unloading just after ramming). "
+"Vitesse utilisée pour décharger le filament sur la tour de nettoyage "
+"(n'affecte pas l'étape initiale de déchargement juste après l'expulsion). "
 
 #: src/libslic3r/PrintConfig.cpp:599
 msgid "Unloading speed at the start"
-msgstr "Unloading speed at the start"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:600
 msgid ""
 "Speed used for unloading the tip of the filament immediately after ramming. "
 msgstr ""
-"Speed used for unloading the tip of the filament immediately after ramming. "
 
 #: src/libslic3r/PrintConfig.cpp:607
 msgid "Delay after unloading"
-msgstr "Delay after unloading"
+msgstr "Délai après le déchargement"
 
 #: src/libslic3r/PrintConfig.cpp:608
 msgid ""
@@ -5425,33 +5398,31 @@ msgid ""
 "toolchanges with flexible materials that may need more time to shrink to "
 "original dimensions. "
 msgstr ""
-"Time to wait after the filament is unloaded. May help to get reliable "
-"toolchanges with flexible materials that may need more time to shrink to "
-"original dimensions. "
+"Temps d'attente nécessaire après que le filament ait été déchargé.  Peut "
+"aider à obtenir des changements d'outils fiables avec des matériaux flexible "
+"qui ont besoin de plus de temps pour revenir à leurs dimensions originales. "
 
 #: src/libslic3r/PrintConfig.cpp:617
 msgid "Number of cooling moves"
-msgstr "Number of cooling moves"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:618
 msgid ""
 "Filament is cooled by being moved back and forth in the cooling tubes. "
 "Specify desired number of these moves "
 msgstr ""
-"Filament is cooled by being moved back and forth in the cooling tubes. "
-"Specify desired number of these moves "
 
 #: src/libslic3r/PrintConfig.cpp:626
 msgid "Speed of the first cooling move"
-msgstr "Speed of the first cooling move"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:627
 msgid "Cooling moves are gradually accelerating beginning at this speed. "
-msgstr "Cooling moves are gradually accelerating beginning at this speed. "
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:634
 msgid "Minimal purge on wipe tower"
-msgstr "Minimal purge on wipe tower"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:635
 msgid ""
@@ -5461,27 +5432,22 @@ msgid ""
 "object, Slic3r will always prime this amount of material into the wipe tower "
 "to produce successive infill or sacrificial object extrusions reliably."
 msgstr ""
-"After a tool change, the exact position of the newly loaded filament inside "
-"the nozzle may not be known, and the filament pressure is likely not yet "
-"stable. Before purging the print head into an infill or a sacrificial "
-"object, Slic3r will always prime this amount of material into the wipe tower "
-"to produce successive infill or sacrificial object extrusions reliably."
 
 #: src/libslic3r/PrintConfig.cpp:639
 msgid "mm³"
-msgstr "mm³"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:645
 msgid "Speed of the last cooling move"
-msgstr "Speed of the last cooling move"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:646
 msgid "Cooling moves are gradually accelerating towards this speed. "
-msgstr "Cooling moves are gradually accelerating towards this speed. "
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:653
 msgid "Filament load time"
-msgstr "Filament load time"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:654
 msgid ""
@@ -5489,25 +5455,22 @@ msgid ""
 "filament during a tool change (when executing the T code). This time is "
 "added to the total print time by the G-code time estimator."
 msgstr ""
-"Time for the printer firmware (or the Multi Material Unit 2.0) to load a new "
-"filament during a tool change (when executing the T code). This time is "
-"added to the total print time by the G-code time estimator."
 
 #: src/libslic3r/PrintConfig.cpp:661
 msgid "Ramming parameters"
-msgstr "Ramming parameters"
+msgstr "Paramètres de l'expulsion"
 
 #: src/libslic3r/PrintConfig.cpp:662
 msgid ""
 "This string is edited by RammingDialog and contains ramming specific "
 "parameters "
 msgstr ""
-"This string is edited by RammingDialog and contains ramming specific "
-"parameters "
+"Cette chaine est éditée par RammingDialog et contient les paramètres "
+"spécifiques d'expulsion "
 
 #: src/libslic3r/PrintConfig.cpp:668
 msgid "Filament unload time"
-msgstr "Filament unload time"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:669
 msgid ""
@@ -5515,9 +5478,6 @@ msgid ""
 "filament during a tool change (when executing the T code). This time is "
 "added to the total print time by the G-code time estimator."
 msgstr ""
-"Time for the printer firmware (or the Multi Material Unit 2.0) to unload a "
-"filament during a tool change (when executing the T code). This time is "
-"added to the total print time by the G-code time estimator."
 
 #: src/libslic3r/PrintConfig.cpp:677
 msgid ""
@@ -5525,13 +5485,13 @@ msgid ""
 "caliper and do multiple measurements along the filament, then compute the "
 "average."
 msgstr ""
-"Enter your filament diameter here. Good precision is required, so use a "
-"caliper and do multiple measurements along the filament, then compute the "
-"average."
+"Entrez le diamètre de votre filament ici. Une bonne précision est requise, "
+"utilisez un pied à coulisse et calculez la moyenne de plusieurs mesures le "
+"long du filament."
 
 #: src/libslic3r/PrintConfig.cpp:684
 msgid "Density"
-msgstr "Density"
+msgstr "Densité"
 
 #: src/libslic3r/PrintConfig.cpp:685
 msgid ""
@@ -5540,10 +5500,11 @@ msgid ""
 "the length to volume. Better is to calculate the volume directly through "
 "displacement."
 msgstr ""
-"Enter your filament density here. This is only for statistical information. "
-"A decent way is to weigh a known length of filament and compute the ratio of "
-"the length to volume. Better is to calculate the volume directly through "
-"displacement."
+"Entrez ici la densité de votre filament. Ceci est uniquement pour des "
+"informations statistiques. Un bon moyen d'obtenir cette valeur est de peser "
+"un morceau de filament d'une longueur connue et de calculer le rapport de sa "
+"longueur par son poids. Le mieux est de calculer le volume directement par "
+"déplacement."
 
 #: src/libslic3r/PrintConfig.cpp:688
 msgid "g/cm³"
@@ -5551,35 +5512,36 @@ msgstr "g/cm³"
 
 #: src/libslic3r/PrintConfig.cpp:693
 msgid "Filament type"
-msgstr "Filament type"
+msgstr "Type de filament"
 
 #: src/libslic3r/PrintConfig.cpp:694
 msgid "The filament material type for use in custom G-codes."
-msgstr "The filament material type for use in custom G-codes."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:710
 msgid "Soluble material"
-msgstr "Soluble material"
+msgstr "Matériau soluble"
 
 #: src/libslic3r/PrintConfig.cpp:711
 msgid "Soluble material is most likely used for a soluble support."
-msgstr "Soluble material is most likely used for a soluble support."
+msgstr ""
+"Il est probable qu'un matériau soluble soit utilisé pour un support soluble."
 
 #: src/libslic3r/PrintConfig.cpp:717
 msgid ""
 "Enter your filament cost per kg here. This is only for statistical "
 "information."
 msgstr ""
-"Enter your filament cost per kg here. This is only for statistical "
-"information."
+"Entrez le coût par Kg de votre filament. Ceci est uniquement pour "
+"l'information statistique."
 
 #: src/libslic3r/PrintConfig.cpp:718
 msgid "money/kg"
-msgstr "money/kg"
+msgstr "€/kg"
 
 #: src/libslic3r/PrintConfig.cpp:727
 msgid "Fill angle"
-msgstr "Fill angle"
+msgstr "Angle du remplissage"
 
 #: src/libslic3r/PrintConfig.cpp:729
 msgid ""
@@ -5587,78 +5549,80 @@ msgid ""
 "this. Bridges will be infilled using the best direction Slic3r can detect, "
 "so this setting does not affect them."
 msgstr ""
-"Default base angle for infill orientation. Cross-hatching will be applied to "
-"this. Bridges will be infilled using the best direction Slic3r can detect, "
-"so this setting does not affect them."
+"Angle de base par défaut pour l'orientation du remplissage. Des croisements "
+"seront appliqués à cette valeur. Les ponts seront remplis avec la meilleure "
+"direction que Slic3r peut détecter, ce réglage ne les affecteront donc pas."
 
 #: src/libslic3r/PrintConfig.cpp:741
 msgid "Fill density"
-msgstr "Fill density"
+msgstr "Densité du remplissage"
 
 #: src/libslic3r/PrintConfig.cpp:743
 msgid "Density of internal infill, expressed in the range 0% - 100%."
-msgstr "Density of internal infill, expressed in the range 0% - 100%."
+msgstr "Densité du remplissage interne, exprimée en pourcentage de 0% à 100%."
 
 #: src/libslic3r/PrintConfig.cpp:778
 msgid "Fill pattern"
-msgstr "Fill pattern"
+msgstr "Motif de remplissage"
 
 #: src/libslic3r/PrintConfig.cpp:780
 msgid "Fill pattern for general low-density infill."
-msgstr "Fill pattern for general low-density infill."
+msgstr "Motif pour les remplissages de faible densité."
 
 #: src/libslic3r/PrintConfig.cpp:796
 msgid "Grid"
-msgstr "Grid"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:797
 msgid "Triangles"
-msgstr "Triangles"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:798
 msgid "Stars"
-msgstr "Stars"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:799
 msgid "Cubic"
-msgstr "Cubic"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:800
 msgid "Line"
-msgstr "Line"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:802 src/libslic3r/PrintConfig.cpp:1923
 msgid "Honeycomb"
-msgstr "Honeycomb"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:803
 msgid "3D Honeycomb"
-msgstr "3D Honeycomb"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:804
 msgid "Gyroid"
-msgstr "Gyroid"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:811 src/libslic3r/PrintConfig.cpp:820
 #: src/libslic3r/PrintConfig.cpp:828 src/libslic3r/PrintConfig.cpp:861
 msgid "First layer"
-msgstr "First layer"
+msgstr "Première couche"
 
 #: src/libslic3r/PrintConfig.cpp:812
 msgid ""
 "This is the acceleration your printer will use for first layer. Set zero to "
 "disable acceleration control for first layer."
 msgstr ""
-"This is the acceleration your printer will use for first layer. Set zero to "
-"disable acceleration control for first layer."
+"L'accélération que l'imprimante utilisera pour la première couche. Régler "
+"sur zéro afin de désactiver le contrôle de l'accélération pour la première "
+"couche."
 
 #: src/libslic3r/PrintConfig.cpp:821
 msgid ""
 "Heated build plate temperature for the first layer. Set this to zero to "
 "disable bed temperature control commands in the output."
 msgstr ""
-"Heated build plate temperature for the first layer. Set this to zero to "
-"disable bed temperature control commands in the output."
+"Température du plateau chauffant pour la première couche. Mettez ceci à zéro "
+"pour désactiver les commandes de contrôle de température du plateau dans la "
+"sortie."
 
 #: src/libslic3r/PrintConfig.cpp:830
 msgid ""
@@ -5667,14 +5631,16 @@ msgid ""
 "expressed as percentage (for example 120%) it will be computed over first "
 "layer height. If set to zero, it will use the default extrusion width."
 msgstr ""
-"Set this to a non-zero value to set a manual extrusion width for first "
-"layer. You can use this to force fatter extrudates for better adhesion. If "
-"expressed as percentage (for example 120%) it will be computed over first "
-"layer height. If set to zero, it will use the default extrusion width."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la "
+"largeur d’extrusion pour la première couche. Vous pouvez procéder ainsi pour "
+"obtenir des extrudats plus épais afin d’avoir une meilleure adhérence. Si la "
+"valeur est exprimée en pourcentage (par exemple : 120%), elle sera calculée "
+"par rapport à la hauteur de la première couche. Si elle est réglée sur zéro, "
+"elle utilisera la largeur d’extrusion par défaut."
 
 #: src/libslic3r/PrintConfig.cpp:840
 msgid "First layer height"
-msgstr "First layer height"
+msgstr "Hauteur de la première couche"
 
 #: src/libslic3r/PrintConfig.cpp:842
 msgid ""
@@ -5683,19 +5649,20 @@ msgid ""
 "plates. This can be expressed as an absolute value or as a percentage (for "
 "example: 150%) over the default layer height."
 msgstr ""
-"When printing with very low layer heights, you might still want to print a "
-"thicker bottom layer to improve adhesion and tolerance for non perfect build "
-"plates. This can be expressed as an absolute value or as a percentage (for "
-"example: 150%) over the default layer height."
+"Lors d'une impression avec de très faibles épaisseurs de couche, vous pouvez "
+"choisir d'imprimer une première couche plus épaisse pour améliorer "
+"l'adhérence et la tolérance aux plateaux imparfaits. Ce réglage peut être "
+"exprimé comme une valeur absolue ou un pourcentage (par exemple 150%) par "
+"rapport à l'épaisseur de couche par défaut."
 
 #: src/libslic3r/PrintConfig.cpp:846 src/libslic3r/PrintConfig.cpp:991
 #: src/libslic3r/PrintConfig.cpp:1796
 msgid "mm or %"
-msgstr "mm or %"
+msgstr "mm ou %"
 
 #: src/libslic3r/PrintConfig.cpp:851
 msgid "First layer speed"
-msgstr "First layer speed"
+msgstr "Vitesse de la première couche"
 
 #: src/libslic3r/PrintConfig.cpp:852
 msgid ""
@@ -5703,9 +5670,10 @@ msgid ""
 "the print moves of the first layer, regardless of their type. If expressed "
 "as a percentage (for example: 40%) it will scale the default speeds."
 msgstr ""
-"If expressed as absolute value in mm/s, this speed will be applied to all "
-"the print moves of the first layer, regardless of their type. If expressed "
-"as a percentage (for example: 40%) it will scale the default speeds."
+"Si exprimée avec une valeur absolue en mm/s, cette vitesse sera appliquée à "
+"tous les déplacements d'impression de la première couche, quel que soit leur "
+"type. Si exprimée comme un pourcentage (par exemple 40%), cela modulera la "
+"vitesse par défaut."
 
 #: src/libslic3r/PrintConfig.cpp:862
 msgid ""
@@ -5713,9 +5681,10 @@ msgid ""
 "manually during print, set this to zero to disable temperature control "
 "commands in the output file."
 msgstr ""
-"Extruder temperature for first layer. If you want to control temperature "
-"manually during print, set this to zero to disable temperature control "
-"commands in the output file."
+"Température de l’extrudeur pour la première couche. Si vous voulez contrôler "
+"manuellement la température au cours de l’impression, mettez à zéro pour "
+"désactiver les commandes de contrôle de température dans le fichier de "
+"sortie."
 
 #: src/libslic3r/PrintConfig.cpp:871
 msgid ""
@@ -5723,13 +5692,14 @@ msgid ""
 "low to avoid too much shaking and resonance issues. Set zero to disable gaps "
 "filling."
 msgstr ""
-"Speed for filling small gaps using short zigzag moves. Keep this reasonably "
-"low to avoid too much shaking and resonance issues. Set zero to disable gaps "
-"filling."
+"Vitesse pour combler de petits interstices avec de courts mouvements en "
+"zigzag. Gardez un réglage relativement lent afin d'éviter les problèmes de "
+"vibration et de résonance. Réglez sur zéro pour désactiver le remplissage "
+"d'interstices."
 
 #: src/libslic3r/PrintConfig.cpp:879
 msgid "Verbose G-code"
-msgstr "Verbose G-code"
+msgstr "G-code commenté"
 
 #: src/libslic3r/PrintConfig.cpp:880
 msgid ""
@@ -5737,13 +5707,14 @@ msgid ""
 "descriptive text. If you print from SD card, the additional weight of the "
 "file could make your firmware slow down."
 msgstr ""
-"Enable this to get a commented G-code file, with each line explained by a "
-"descriptive text. If you print from SD card, the additional weight of the "
-"file could make your firmware slow down."
+"Activez ceci pour obtenir un fichier G-code commenté, avec chaque ligne "
+"expliquée par un texte descriptif. Si vous imprimez depuis une carte SD, le "
+"poids supplémentaire du fichier pourrait ralentir le firmware de votre "
+"imprimante."
 
 #: src/libslic3r/PrintConfig.cpp:887
 msgid "G-code flavor"
-msgstr "G-code flavor"
+msgstr "Version du G-code"
 
 #: src/libslic3r/PrintConfig.cpp:888
 msgid ""
@@ -5752,18 +5723,18 @@ msgid ""
 "output. The \"No extrusion\" flavor prevents Slic3r from exporting any "
 "extrusion value at all."
 msgstr ""
-"Some G/M-code commands, including temperature control and others, are not "
-"universal. Set this option to your printer's firmware to get a compatible "
-"output. The \"No extrusion\" flavor prevents Slic3r from exporting any "
-"extrusion value at all."
+"Certaines commandes G/M-code, dont le contrôle de température et autres, ne "
+"sont pas universelles. Paramétrez cette option avec le firmware de votre "
+"imprimante pour obtenir une sortie compatible. La version \"sans extrusion\" "
+"empêche Slic3r d'exporter toute valeur d'extrusion."
 
 #: src/libslic3r/PrintConfig.cpp:911
 msgid "No extrusion"
-msgstr "No extrusion"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:924
 msgid "High extruder current on filament swap"
-msgstr "High extruder current on filament swap"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:925
 msgid ""
@@ -5771,41 +5742,40 @@ msgid ""
 "filament exchange sequence to allow for rapid ramming feed rates and to "
 "overcome resistance when loading a filament with an ugly shaped tip."
 msgstr ""
-"It may be beneficial to increase the extruder motor current during the "
-"filament exchange sequence to allow for rapid ramming feed rates and to "
-"overcome resistance when loading a filament with an ugly shaped tip."
 
 #: src/libslic3r/PrintConfig.cpp:933
 msgid ""
 "This is the acceleration your printer will use for infill. Set zero to "
 "disable acceleration control for infill."
 msgstr ""
-"This is the acceleration your printer will use for infill. Set zero to "
-"disable acceleration control for infill."
+"Il s'agit de l'accélération que votre imprimante utilisera pour le "
+"remplissage. Régler sur zéro afin de désactiver le contrôle de "
+"l'accélération pour le remplissage."
 
 #: src/libslic3r/PrintConfig.cpp:941
 msgid "Combine infill every"
-msgstr "Combine infill every"
+msgstr "Combiner le remplissage toutes les"
 
 #: src/libslic3r/PrintConfig.cpp:943
 msgid ""
 "This feature allows to combine infill and speed up your print by extruding "
 "thicker infill layers while preserving thin perimeters, thus accuracy."
 msgstr ""
-"This feature allows to combine infill and speed up your print by extruding "
-"thicker infill layers while preserving thin perimeters, thus accuracy."
+"Cette fonction permet de combiner le remplissage afin d'accélérer "
+"l'impression en extrudant des couches de remplissage plus épaisses tout en "
+"conservant des périmètres fins, avec plus de précision."
 
 #: src/libslic3r/PrintConfig.cpp:946
 msgid "Combine infill every n layers"
-msgstr "Combine infill every n layers"
+msgstr "Combiner le remplissage toutes les n couches"
 
 #: src/libslic3r/PrintConfig.cpp:952
 msgid "Infill extruder"
-msgstr "Infill extruder"
+msgstr "Extrudeur pour le remplissage"
 
 #: src/libslic3r/PrintConfig.cpp:954
 msgid "The extruder to use when printing infill."
-msgstr "The extruder to use when printing infill."
+msgstr "L'extrudeur à utiliser pour imprimer le remplissage."
 
 #: src/libslic3r/PrintConfig.cpp:962
 msgid ""
@@ -5815,27 +5785,29 @@ msgid ""
 "up the infill and make your parts stronger. If expressed as percentage (for "
 "example 90%) it will be computed over layer height."
 msgstr ""
-"Set this to a non-zero value to set a manual extrusion width for infill. If "
-"left zero, default extrusion width will be used if set, otherwise 1.125 x "
-"nozzle diameter will be used. You may want to use fatter extrudates to speed "
-"up the infill and make your parts stronger. If expressed as percentage (for "
-"example 90%) it will be computed over layer height."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la "
+"largeur d’extrusion pour le remplissage. Si la valeur reste sur zéro, la "
+"largeur d’extrusion par défaut sera utilisée si définie, sinon la valeur "
+"1.125 x diamètre de la buse sera utilisée. Vous voudrez peut-être utiliser "
+"des extrudats plus épais pour accélérer le remplissage et rendre vos pièces "
+"plus solides. Si la valeur est exprimée en pourcentage (par exemple : 90%), "
+"elle sera calculée par rapport à la hauteur de couche."
 
 #: src/libslic3r/PrintConfig.cpp:971
 msgid "Infill before perimeters"
-msgstr "Infill before perimeters"
+msgstr "Remplissage avant les périmètres"
 
 #: src/libslic3r/PrintConfig.cpp:972
 msgid ""
 "This option will switch the print order of perimeters and infill, making the "
 "latter first."
 msgstr ""
-"This option will switch the print order of perimeters and infill, making the "
-"latter first."
+"Cette option inverse l'ordre d'impression des périmètres et du remplissage, "
+"ce dernier étant alors imprimé en premier."
 
 #: src/libslic3r/PrintConfig.cpp:977
 msgid "Only infill where needed"
-msgstr "Only infill where needed"
+msgstr "Remplissage seulement où cela est nécessaire"
 
 #: src/libslic3r/PrintConfig.cpp:979
 msgid ""
@@ -5843,13 +5815,14 @@ msgid ""
 "ceilings (it will act as internal support material). If enabled, slows down "
 "the G-code generation due to the multiple checks involved."
 msgstr ""
-"This option will limit infill to the areas actually needed for supporting "
-"ceilings (it will act as internal support material). If enabled, slows down "
-"the G-code generation due to the multiple checks involved."
+"Cette option limitera le remplissage aux zones nécessaires pour soutenir les "
+"couches supérieures (cela agira comme un support interne). Si activé, la "
+"génération du G-Code prendra plus de temps à cause des calculs "
+"supplémentaires requis."
 
 #: src/libslic3r/PrintConfig.cpp:986
 msgid "Infill/perimeters overlap"
-msgstr "Infill/perimeters overlap"
+msgstr "Chevauchement remplissage/périmètres"
 
 #: src/libslic3r/PrintConfig.cpp:988
 msgid ""
@@ -5858,26 +5831,29 @@ msgid ""
 "cause gaps. If expressed as percentage (example: 15%) it is calculated over "
 "perimeter extrusion width."
 msgstr ""
-"This setting applies an additional overlap between infill and perimeters for "
-"better bonding. Theoretically this shouldn't be needed, but backlash might "
-"cause gaps. If expressed as percentage (example: 15%) it is calculated over "
-"perimeter extrusion width."
+"Cette option applique un chevauchement supplémentaire entre les périmètres "
+"et le remplissage pour une meilleur fusion. En théorie, cela ne devrait pas "
+"être nécessaire, mais le jeu mécanique peut générer des espacements. Si "
+"exprimé en pourcentage (par exemple 15%), la valeur sera calculée en "
+"fonction de la largeur d'extrusion du périmètre."
 
 #: src/libslic3r/PrintConfig.cpp:999
 msgid "Speed for printing the internal fill. Set to zero for auto."
-msgstr "Speed for printing the internal fill. Set to zero for auto."
+msgstr ""
+"Vitesse pour imprimer le remplissage interne. Réglez sur zéro pour un "
+"ajustement automatique."
 
 #: src/libslic3r/PrintConfig.cpp:1007
 msgid "Inherits profile"
-msgstr "Inherits profile"
+msgstr "Hérite du profil"
 
 #: src/libslic3r/PrintConfig.cpp:1008
 msgid "Name of the profile, from which this profile inherits."
-msgstr "Name of the profile, from which this profile inherits."
+msgstr "Nom du profil, duquel hérite ce profil."
 
 #: src/libslic3r/PrintConfig.cpp:1021
 msgid "Interface shells"
-msgstr "Interface shells"
+msgstr "Coques d'interface"
 
 #: src/libslic3r/PrintConfig.cpp:1022
 msgid ""
@@ -5885,9 +5861,9 @@ msgid ""
 "Useful for multi-extruder prints with translucent materials or manual "
 "soluble support material."
 msgstr ""
-"Force the generation of solid shells between adjacent materials/volumes. "
-"Useful for multi-extruder prints with translucent materials or manual "
-"soluble support material."
+"Force la génération de coques solides entre des volumes/matériaux adjacents. "
+"Utile pour des impressions multi-extrudeurs avec des matériaux translucides "
+"ou avec un support manuel soluble."
 
 #: src/libslic3r/PrintConfig.cpp:1031
 msgid ""
@@ -5896,14 +5872,14 @@ msgid ""
 "use placeholder variables for all Slic3r settings as well as [layer_num] and "
 "[layer_z]."
 msgstr ""
-"This custom code is inserted at every layer change, right after the Z move "
-"and before the extruder moves to the first layer point. Note that you can "
-"use placeholder variables for all Slic3r settings as well as [layer_num] and "
-"[layer_z]."
+"Ce code personnalisé est inséré à chaque changement de couche, juste après "
+"le mouvement Z et avant le déplacement de l'extrudeur au point de départ de "
+"la couche suivante. Notez que vous pouvez utiliser des variables génériques "
+"pour tous les réglages de Slic3r de même que [layer_num] et [layer_z]."
 
 #: src/libslic3r/PrintConfig.cpp:1042
 msgid "Supports remaining times"
-msgstr "Supports remaining times"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1043
 msgid ""
@@ -5912,83 +5888,80 @@ msgid ""
 "As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 "
 "firmware supports M73 Qxx Sxx for the silent mode."
 msgstr ""
-"Emit M73 P[percent printed] R[remaining time in minutes] at 1 minute "
-"intervals into the G-code to let the firmware show accurate remaining time. "
-"As of now only the Prusa i3 MK3 firmware recognizes M73. Also the i3 MK3 "
-"firmware supports M73 Qxx Sxx for the silent mode."
 
 #: src/libslic3r/PrintConfig.cpp:1051
 msgid "Supports silent mode"
-msgstr "Supports silent mode"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1052
 msgid "Set silent mode for the G-code flavor"
-msgstr "Set silent mode for the G-code flavor"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1075
 msgid "Maximum feedrate %1%"
-msgstr "Maximum feedrate %1%"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1077
 msgid "Maximum feedrate of the %1% axis"
-msgstr "Maximum feedrate of the %1% axis"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1085
 msgid "Maximum acceleration %1%"
-msgstr "Maximum acceleration %1%"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1087
 msgid "Maximum acceleration of the %1% axis"
-msgstr "Maximum acceleration of the %1% axis"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1095
 msgid "Maximum jerk %1%"
-msgstr "Maximum jerk %1%"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1097
 msgid "Maximum jerk of the %1% axis"
-msgstr "Maximum jerk of the %1% axis"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1108 src/libslic3r/PrintConfig.cpp:1110
 msgid "Minimum feedrate when extruding"
-msgstr "Minimum feedrate when extruding"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1119 src/libslic3r/PrintConfig.cpp:1121
 msgid "Minimum travel feedrate"
-msgstr "Minimum travel feedrate"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1130 src/libslic3r/PrintConfig.cpp:1132
 msgid "Maximum acceleration when extruding"
-msgstr "Maximum acceleration when extruding"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1141 src/libslic3r/PrintConfig.cpp:1143
 msgid "Maximum acceleration when retracting"
-msgstr "Maximum acceleration when retracting"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1151 src/libslic3r/PrintConfig.cpp:1160
 msgid "Max"
-msgstr "Max"
+msgstr "Maximum"
 
 #: src/libslic3r/PrintConfig.cpp:1152
 msgid "This setting represents the maximum speed of your fan."
-msgstr "This setting represents the maximum speed of your fan."
+msgstr "Cette option représente la vitesse maximum du ventilateur."
 
 #: src/libslic3r/PrintConfig.cpp:1161
-#, no-c-format
+#, fuzzy, c-format
 msgid ""
 "This is the highest printable layer height for this extruder, used to cap "
 "the variable layer height and support layer height. Maximum recommended "
 "layer height is 75% of the extrusion width to achieve reasonable inter-layer "
 "adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter."
 msgstr ""
-"This is the highest printable layer height for this extruder, used to cap "
-"the variable layer height and support layer height. Maximum recommended "
-"layer height is 75% of the extrusion width to achieve reasonable inter-layer "
-"adhesion. If set to 0, layer height is limited to 75% of the nozzle diameter."
+"Ceci est la hauteur de couche imprimable maximum pour cet extrudeur, "
+"utilisée pour plafonner la hauteur de couche variable et la hauteur de "
+"couche des supports. La hauteur de couche maximum recommandée est 75% de la "
+"largeur d'extrusion afin d'obtenir une adhésion inter-couches correcte. Si "
+"réglée sur 0, la hauteur de couche est limitée à 75% du diamètre de la buse."
 
 #: src/libslic3r/PrintConfig.cpp:1171
 msgid "Max print speed"
-msgstr "Max print speed"
+msgstr "Vitesse d'impression maximale"
 
 #: src/libslic3r/PrintConfig.cpp:1172
 msgid ""
@@ -5996,21 +5969,22 @@ msgid ""
 "speed in order to keep constant extruder pressure. This experimental setting "
 "is used to set the highest print speed you want to allow."
 msgstr ""
-"When setting other speed settings to 0 Slic3r will autocalculate the optimal "
-"speed in order to keep constant extruder pressure. This experimental setting "
-"is used to set the highest print speed you want to allow."
+"Lorsque vous réglez les autres vitesses à 0, Slic3r calculera "
+"automatiquement la vitesse optimale de façon à garder une pression constante "
+"dans l'extrudeur. Cette fonction expérimentale est utilisée pour régler la "
+"plus haute vitesse que vous souhaitez autoriser."
 
 #: src/libslic3r/PrintConfig.cpp:1182
 msgid ""
 "This experimental setting is used to set the maximum volumetric speed your "
 "extruder supports."
 msgstr ""
-"This experimental setting is used to set the maximum volumetric speed your "
-"extruder supports."
+"Ce réglage expérimental est utilisé pour paramétrer la vitesse volumétrique "
+"maximum tolérée par votre extrudeur."
 
 #: src/libslic3r/PrintConfig.cpp:1191
 msgid "Max volumetric slope positive"
-msgstr "Max volumetric slope positive"
+msgstr "Pente volumétrique positive maximum"
 
 #: src/libslic3r/PrintConfig.cpp:1192 src/libslic3r/PrintConfig.cpp:1203
 msgid ""
@@ -6019,10 +5993,11 @@ msgid ""
 "of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/"
 "s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds."
 msgstr ""
-"This experimental setting is used to limit the speed of change in extrusion "
-"rate. A value of 1.8 mm³/s² ensures, that a change from the extrusion rate "
-"of 1.8 mm³/s (0.45mm extrusion width, 0.2mm extrusion height, feedrate 20 mm/"
-"s) to 5.4 mm³/s (feedrate 60 mm/s) will take at least 2 seconds."
+"Ce réglage expérimental sert à limiter la vitesse de changement dans le flux "
+"d'extrusion. Une valeur de 1.8 mm³/s² garantit qu'un changement de flux "
+"d'extrusion de 1.8 mm³/s (largeur d'extrusion 0.45mm, hauteur d'extrusion "
+"0.2mm, alimentation 20 mm/s) à 5.4 mm³/s (alimentation 60 mm/s) prendra au "
+"moins 2 secondes."
 
 #: src/libslic3r/PrintConfig.cpp:1196 src/libslic3r/PrintConfig.cpp:1207
 msgid "mm³/s²"
@@ -6030,15 +6005,17 @@ msgstr "mm³/s²"
 
 #: src/libslic3r/PrintConfig.cpp:1202
 msgid "Max volumetric slope negative"
-msgstr "Max volumetric slope negative"
+msgstr "Pente volumétrique négative maximum"
 
 #: src/libslic3r/PrintConfig.cpp:1214 src/libslic3r/PrintConfig.cpp:1223
 msgid "Min"
-msgstr "Min"
+msgstr "Minimum"
 
 #: src/libslic3r/PrintConfig.cpp:1215
 msgid "This setting represents the minimum PWM your fan needs to work."
-msgstr "This setting represents the minimum PWM your fan needs to work."
+msgstr ""
+"Cette option représente le PWM minimum dont votre ventilateur a besoin pour "
+"tourner."
 
 #: src/libslic3r/PrintConfig.cpp:1224
 msgid ""
@@ -6046,21 +6023,21 @@ msgid ""
 "resolution for variable layer height. Typical values are between 0.05 mm and "
 "0.1 mm."
 msgstr ""
-"This is the lowest printable layer height for this extruder and limits the "
-"resolution for variable layer height. Typical values are between 0.05 mm and "
-"0.1 mm."
+"Cette valeur est la hauteur de couche imprimable minimum pour cet extrudeur "
+"et elle limite la résolution pour la hauteur de couche variable. Les valeurs "
+"type se situent entre 0.05 mm et 0.1 mm."
 
 #: src/libslic3r/PrintConfig.cpp:1232
 msgid "Min print speed"
-msgstr "Min print speed"
+msgstr "Vitesse d'impression minimale"
 
 #: src/libslic3r/PrintConfig.cpp:1233
 msgid "Slic3r will not scale speed down below this speed."
-msgstr "Slic3r will not scale speed down below this speed."
+msgstr "Slic3r ne descendra pas en-dessous de cette vitesse."
 
 #: src/libslic3r/PrintConfig.cpp:1240
 msgid "Minimal filament extrusion length"
-msgstr "Minimal filament extrusion length"
+msgstr "Longueur minimale d'extrusion de filament"
 
 #: src/libslic3r/PrintConfig.cpp:1241
 msgid ""
@@ -6068,55 +6045,55 @@ msgid ""
 "specified amount of filament on the bottom layer. For multi-extruder "
 "machines, this minimum applies to each extruder."
 msgstr ""
-"Generate no less than the number of skirt loops required to consume the "
-"specified amount of filament on the bottom layer. For multi-extruder "
-"machines, this minimum applies to each extruder."
+"Nombre minimum de contours à générer afin de consommer la quantité de "
+"filament spécifiée sur la couche inférieure. Pour les machines multi-"
+"extrudeurs, ce minimum s'applique à chaque extrudeur."
 
 #: src/libslic3r/PrintConfig.cpp:1250
 msgid "Configuration notes"
-msgstr "Configuration notes"
+msgstr "Notes de configuration"
 
 #: src/libslic3r/PrintConfig.cpp:1251
 msgid ""
 "You can put here your personal notes. This text will be added to the G-code "
 "header comments."
 msgstr ""
-"You can put here your personal notes. This text will be added to the G-code "
-"header comments."
+"Vous pouvez inscrire ici vos commentaires personnels. Ce texte sera ajouté "
+"au commentaire en entête du G-Code."
 
 #: src/libslic3r/PrintConfig.cpp:1260
 msgid "Nozzle diameter"
-msgstr "Nozzle diameter"
+msgstr "Diamètre de la buse"
 
 #: src/libslic3r/PrintConfig.cpp:1261
 msgid ""
 "This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)"
 msgstr ""
-"This is the diameter of your extruder nozzle (for example: 0.5, 0.35 etc.)"
+"Il s'agit du diamètre de la buse de votre extrudeur (par exemple: 0.5, 0.35, "
+"etc.)"
 
 #: src/libslic3r/PrintConfig.cpp:1266
 msgid "Host Type"
-msgstr "Host Type"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1267
 msgid ""
 "Slic3r can upload G-code files to a printer host. This field must contain "
 "the kind of the host."
 msgstr ""
-"Slic3r can upload G-code files to a printer host. This field must contain "
-"the kind of the host."
 
 #: src/libslic3r/PrintConfig.cpp:1278
 msgid "Only retract when crossing perimeters"
-msgstr "Only retract when crossing perimeters"
+msgstr "Rétracter uniquement lors du franchissement de périmètres"
 
 #: src/libslic3r/PrintConfig.cpp:1279
 msgid ""
 "Disables retraction when the travel path does not exceed the upper layer's "
 "perimeters (and thus any ooze will be probably invisible)."
 msgstr ""
-"Disables retraction when the travel path does not exceed the upper layer's "
-"perimeters (and thus any ooze will be probably invisible)."
+"Désactiver la rétraction lorsque le chemin de déplacement ne franchit pas "
+"les périmètres des couches supérieures (et donc les coulures seront "
+"probablement invisibles)."
 
 #: src/libslic3r/PrintConfig.cpp:1286
 msgid ""
@@ -6124,13 +6101,14 @@ msgid ""
 "oozing. It will enable a tall skirt automatically and move extruders outside "
 "such skirt when changing temperatures."
 msgstr ""
-"This option will drop the temperature of the inactive extruders to prevent "
-"oozing. It will enable a tall skirt automatically and move extruders outside "
-"such skirt when changing temperatures."
+"Cette option abaissera la température des extrudeurs inutilisés pour "
+"prévenir le oozing (suintement). Cela active automatiquement la génération "
+"d'une grande jupe et le déplacement des extrudeurs hors de cette jupe lors "
+"des changements de température."
 
 #: src/libslic3r/PrintConfig.cpp:1293
 msgid "Output filename format"
-msgstr "Output filename format"
+msgstr "Format du nom de fichier de sortie"
 
 #: src/libslic3r/PrintConfig.cpp:1294
 msgid ""
@@ -6139,38 +6117,40 @@ msgid ""
 "[year], [month], [day], [hour], [minute], [second], [version], "
 "[input_filename], [input_filename_base]."
 msgstr ""
-"You can use all configuration options as variables inside this template. For "
-"example: [layer_height], [fill_density] etc. You can also use [timestamp], "
-"[year], [month], [day], [hour], [minute], [second], [version], "
-"[input_filename], [input_filename_base]."
+"Vous pouvez utiliser toutes les options de configuration comme variables "
+"dans ce modèle. Par exemple :  [layer_height], [fill_density] etc. Vous "
+"pouvez aussi utiliser [timestamp], [year], [month], [day], [hour], [minute], "
+"[second], [version], [input_filename], [input_filename_base]."
 
 #: src/libslic3r/PrintConfig.cpp:1303
 msgid "Detect bridging perimeters"
-msgstr "Detect bridging perimeters"
+msgstr "Détecter les périmètres faisant des ponts"
 
 #: src/libslic3r/PrintConfig.cpp:1305
 msgid ""
 "Experimental option to adjust flow for overhangs (bridge flow will be used), "
 "to apply bridge speed to them and enable fan."
 msgstr ""
-"Experimental option to adjust flow for overhangs (bridge flow will be used), "
-"to apply bridge speed to them and enable fan."
+"Option expérimentale qui ajuste le flux pour les surplombs (le flux pour les "
+"ponts sera utilisé), leur applique la vitesse pour les ponts et active le "
+"ventilateur."
 
 #: src/libslic3r/PrintConfig.cpp:1311
 msgid "Filament parking position"
-msgstr "Filament parking position"
+msgstr "Position d'attente du filament"
 
 #: src/libslic3r/PrintConfig.cpp:1312
 msgid ""
 "Distance of the extruder tip from the position where the filament is parked "
 "when unloaded. This should match the value in printer firmware. "
 msgstr ""
-"Distance of the extruder tip from the position where the filament is parked "
-"when unloaded. This should match the value in printer firmware. "
+"Distance entre la pointe de l'extrudeur et la position où le filament est "
+"positionné en attente lorsqu'il est déchargé. Cela doit correspondre à la "
+"valeur dans le firmware de l'imprimante. "
 
 #: src/libslic3r/PrintConfig.cpp:1320
 msgid "Extra loading distance"
-msgstr "Extra loading distance"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1321
 msgid ""
@@ -6179,15 +6159,11 @@ msgid ""
 "positive, it is loaded further,  if negative, the loading move is shorter "
 "than unloading. "
 msgstr ""
-"When set to zero, the distance the filament is moved from parking position "
-"during load is exactly the same as it was moved back during unload. When "
-"positive, it is loaded further,  if negative, the loading move is shorter "
-"than unloading. "
 
 #: src/libslic3r/PrintConfig.cpp:1329 src/libslic3r/PrintConfig.cpp:1347
 #: src/libslic3r/PrintConfig.cpp:1359 src/libslic3r/PrintConfig.cpp:1369
 msgid "Perimeters"
-msgstr "Perimeters"
+msgstr "Périmètres"
 
 #: src/libslic3r/PrintConfig.cpp:1330
 msgid ""
@@ -6195,19 +6171,21 @@ msgid ""
 "like 9000 usually gives good results if your hardware is up to the job. Set "
 "zero to disable acceleration control for perimeters."
 msgstr ""
-"This is the acceleration your printer will use for perimeters. A high value "
-"like 9000 usually gives good results if your hardware is up to the job. Set "
-"zero to disable acceleration control for perimeters."
+"L'accélération que votre imprimante utilisera pour les périmètres. Une "
+"valeur élevée comme 9000  donne généralement de bons résultats si votre "
+"matériel le permet. Régler sur zéro afin de désactiver le contrôle de "
+"l'accélération pour les périmètres."
 
 #: src/libslic3r/PrintConfig.cpp:1338
 msgid "Perimeter extruder"
-msgstr "Perimeter extruder"
+msgstr "Extrudeur pour les périmètres"
 
 #: src/libslic3r/PrintConfig.cpp:1340
 msgid ""
 "The extruder to use when printing perimeters and brim. First extruder is 1."
 msgstr ""
-"The extruder to use when printing perimeters and brim. First extruder is 1."
+"L'extrudeur à utiliser pour imprimer les périmètres et la bordure. Le "
+"premier extrudeur a le numéro 1."
 
 #: src/libslic3r/PrintConfig.cpp:1349
 msgid ""
@@ -6217,17 +6195,20 @@ msgid ""
 "nozzle diameter will be used. If expressed as percentage (for example 200%) "
 "it will be computed over layer height."
 msgstr ""
-"Set this to a non-zero value to set a manual extrusion width for perimeters. "
-"You may want to use thinner extrudates to get more accurate surfaces. If "
-"left zero, default extrusion width will be used if set, otherwise 1.125 x "
-"nozzle diameter will be used. If expressed as percentage (for example 200%) "
-"it will be computed over layer height."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement une "
+"largeur d’extrusion pour les périmètres. Vous voudrez peut-être utiliser des "
+"extrudats plus fin pour obtenir des surfaces plus nettes. Si la valeur reste "
+"sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon "
+"la valeur 1.125 x diamètre de la buse sera utilisée. Si la valeur est "
+"exprimée en pourcentage (par exemple : 200%), elle sera calculée par rapport "
+"à la hauteur de couche."
 
 #: src/libslic3r/PrintConfig.cpp:1361
 msgid ""
 "Speed for perimeters (contours, aka vertical shells). Set to zero for auto."
 msgstr ""
-"Speed for perimeters (contours, aka vertical shells). Set to zero for auto."
+"Vitesse pour les périmètres (contours, parois verticales). Réglez sur zéro "
+"pour un ajustement automatique."
 
 #: src/libslic3r/PrintConfig.cpp:1371
 msgid ""
@@ -6236,10 +6217,10 @@ msgid ""
 "surfaces which benefit from a higher number of perimeters if the Extra "
 "Perimeters option is enabled."
 msgstr ""
-"This option sets the number of perimeters to generate for each layer. Note "
-"that Slic3r may increase this number automatically when it detects sloping "
-"surfaces which benefit from a higher number of perimeters if the Extra "
-"Perimeters option is enabled."
+"Cette option définit le nombre de périmètres à générer pour chaque couche. "
+"Notez que Slic3r peut augmenter cette valeur automatiquement si il détecte "
+"une surface inclinée qui nécessite un plus grand nombre de périmètres, si "
+"l'option \"Périmètres supplémentaires\" est sélectionnée."
 
 #: src/libslic3r/PrintConfig.cpp:1375
 msgid "(minimum)"
@@ -6253,63 +6234,63 @@ msgid ""
 "argument, and they can access the Slic3r config settings by reading "
 "environment variables."
 msgstr ""
-"If you want to process the output G-code through custom scripts, just list "
-"their absolute paths here. Separate multiple scripts with a semicolon. "
-"Scripts will be passed the absolute path to the G-code file as the first "
-"argument, and they can access the Slic3r config settings by reading "
-"environment variables."
+"Si vous voulez traiter le G-code de sortie à l'aide de scripts "
+"personnalisés, listez simplement leurs chemins absolus ici. Séparez les "
+"divers scripts avec un point virgule. Les scripts vont recevoir en premier "
+"argument le chemin absolu du fichier G-code, et ils peuvent accéder aux "
+"réglages de configuration de Slic3r en lisant des variables d'environnement."
 
 #: src/libslic3r/PrintConfig.cpp:1395
 msgid "Printer type"
-msgstr "Printer type"
+msgstr "Type d'imprimante"
 
 #: src/libslic3r/PrintConfig.cpp:1396
 msgid "Type of the printer."
-msgstr "Type of the printer."
+msgstr "Type d'imprimante."
 
 #: src/libslic3r/PrintConfig.cpp:1401
 msgid "Printer notes"
-msgstr "Printer notes"
+msgstr "Notes de l'imprimante"
 
 #: src/libslic3r/PrintConfig.cpp:1402
 msgid "You can put your notes regarding the printer here."
-msgstr "You can put your notes regarding the printer here."
+msgstr "Vous pouvez saisir ici vos observations concernant l'imprimante."
 
 #: src/libslic3r/PrintConfig.cpp:1410
 msgid "Printer vendor"
-msgstr "Printer vendor"
+msgstr "Fabriquant de l'imprimante"
 
 #: src/libslic3r/PrintConfig.cpp:1411
 msgid "Name of the printer vendor."
-msgstr "Name of the printer vendor."
+msgstr "Nom du fabriquant de l'imprimante."
 
 #: src/libslic3r/PrintConfig.cpp:1416
 msgid "Printer variant"
-msgstr "Printer variant"
+msgstr "Variante d'imprimante"
 
 #: src/libslic3r/PrintConfig.cpp:1417
 msgid ""
 "Name of the printer variant. For example, the printer variants may be "
 "differentiated by a nozzle diameter."
 msgstr ""
-"Name of the printer variant. For example, the printer variants may be "
-"differentiated by a nozzle diameter."
+"Nom de la variante d'imprimante. Par exemple, la variante d'imprimante peut "
+"être différenciée par un diamètre de buse."
 
 #: src/libslic3r/PrintConfig.cpp:1430
 msgid "Raft layers"
-msgstr "Raft layers"
+msgstr "Couches du radeau"
 
 #: src/libslic3r/PrintConfig.cpp:1432
 msgid ""
 "The object will be raised by this number of layers, and support material "
 "will be generated under it."
 msgstr ""
-"The object will be raised by this number of layers, and support material "
-"will be generated under it."
+"L'objet sera surélevé de ce nombre de couches, et du support sera généré en "
+"dessous."
 
 #: src/libslic3r/PrintConfig.cpp:1440
 msgid "Resolution"
-msgstr "Resolution"
+msgstr "Résolution"
 
 #: src/libslic3r/PrintConfig.cpp:1441
 msgid ""
@@ -6318,48 +6299,50 @@ msgid ""
 "carry more detail than printers can render. Set to zero to disable any "
 "simplification and use full resolution from input."
 msgstr ""
-"Minimum detail resolution, used to simplify the input file for speeding up "
-"the slicing job and reducing memory usage. High-resolution models often "
-"carry more detail than printers can render. Set to zero to disable any "
-"simplification and use full resolution from input."
+"Résolution minimale pour les détails, utilisée pour simplifier le fichier "
+"d'entrée afin d'accélérer le découpage et de réduire l'utilisation de la "
+"mémoire. Les modèles haute-résolution possèdent souvent plus de détails que "
+"ce que les imprimantes peuvent produire. Mettez à zéro pour désactiver toute "
+"simplification et utiliser la résolution complète de l'entrée."
 
 #: src/libslic3r/PrintConfig.cpp:1451
 msgid "Minimum travel after retraction"
-msgstr "Minimum travel after retraction"
+msgstr "Trajet minimal après une rétraction"
 
 #: src/libslic3r/PrintConfig.cpp:1452
 msgid ""
 "Retraction is not triggered when travel moves are shorter than this length."
 msgstr ""
-"Retraction is not triggered when travel moves are shorter than this length."
+"La rétraction n'est pas déclenchée lorsque les déplacements sont plus courts "
+"que cette distance."
 
 #: src/libslic3r/PrintConfig.cpp:1458
 msgid "Retract amount before wipe"
-msgstr "Retract amount before wipe"
+msgstr "Quantité de rétractation avant essuyage"
 
 #: src/libslic3r/PrintConfig.cpp:1459
 msgid ""
 "With bowden extruders, it may be wise to do some amount of quick retract "
 "before doing the wipe movement."
 msgstr ""
-"With bowden extruders, it may be wise to do some amount of quick retract "
-"before doing the wipe movement."
+"Avec les extrudeurs bowden, il est conseillé d'effectuer une rétractation "
+"rapide avant de réaliser le mouvement de nettoyage."
 
 #: src/libslic3r/PrintConfig.cpp:1466
 msgid "Retract on layer change"
-msgstr "Retract on layer change"
+msgstr "Rétracter lors des changements de couche"
 
 #: src/libslic3r/PrintConfig.cpp:1467
 msgid "This flag enforces a retraction whenever a Z move is done."
-msgstr "This flag enforces a retraction whenever a Z move is done."
+msgstr "Cette option active la rétractation lors d'un déplacement sur l'axe Z."
 
 #: src/libslic3r/PrintConfig.cpp:1472 src/libslic3r/PrintConfig.cpp:1480
 msgid "Length"
-msgstr "Length"
+msgstr "Longueur"
 
 #: src/libslic3r/PrintConfig.cpp:1473
 msgid "Retraction Length"
-msgstr "Retraction Length"
+msgstr "Longueur de Rétractation"
 
 #: src/libslic3r/PrintConfig.cpp:1474
 msgid ""
@@ -6367,17 +6350,17 @@ msgid ""
 "amount (the length is measured on raw filament, before it enters the "
 "extruder)."
 msgstr ""
-"When retraction is triggered, filament is pulled back by the specified "
-"amount (the length is measured on raw filament, before it enters the "
-"extruder)."
+"Lorsque la rétractation est déclenchée, le filament est tiré en arrière de "
+"la longueur indiquée (la longueur est mesurée sur le filament brut, avant "
+"qu'il entre dans l'extrudeur)."
 
 #: src/libslic3r/PrintConfig.cpp:1476 src/libslic3r/PrintConfig.cpp:1485
 msgid "mm (zero to disable)"
-msgstr "mm (zero to disable)"
+msgstr "mm (zéro pour désactiver)"
 
 #: src/libslic3r/PrintConfig.cpp:1481
 msgid "Retraction Length (Toolchange)"
-msgstr "Retraction Length (Toolchange)"
+msgstr "Longueur de Rétractation (changement d'outil)"
 
 #: src/libslic3r/PrintConfig.cpp:1482
 msgid ""
@@ -6385,13 +6368,13 @@ msgid ""
 "by the specified amount (the length is measured on raw filament, before it "
 "enters the extruder)."
 msgstr ""
-"When retraction is triggered before changing tool, filament is pulled back "
-"by the specified amount (the length is measured on raw filament, before it "
-"enters the extruder)."
+"Lorsque la rétractation est déclenchée avant un changement d'outil, le "
+"filament est retiré de la longueur indiquée (la longueur est mesurée sur le "
+"filament brut, avant qu'il entre dans l'extrudeur)."
 
 #: src/libslic3r/PrintConfig.cpp:1490
 msgid "Lift Z"
-msgstr "Lift Z"
+msgstr "Levage de l'axe Z"
 
 #: src/libslic3r/PrintConfig.cpp:1491
 msgid ""
@@ -6399,17 +6382,17 @@ msgid ""
 "retraction is triggered. When using multiple extruders, only the setting for "
 "the first extruder will be considered."
 msgstr ""
-"If you set this to a positive value, Z is quickly raised every time a "
-"retraction is triggered. When using multiple extruders, only the setting for "
-"the first extruder will be considered."
+"Si vous indiquez une valeur positive, l'axe Z est rapidement élevé à chaque "
+"rétraction. Lorsque vous utilisez plusieurs extrudeurs, seul le réglage du "
+"premier extrudeur sera pris en compte."
 
 #: src/libslic3r/PrintConfig.cpp:1498
 msgid "Above Z"
-msgstr "Above Z"
+msgstr "Au-delà de Z"
 
 #: src/libslic3r/PrintConfig.cpp:1499
 msgid "Only lift Z above"
-msgstr "Only lift Z above"
+msgstr "Lever Z seulement au-dessus de"
 
 #: src/libslic3r/PrintConfig.cpp:1500
 msgid ""
@@ -6417,17 +6400,17 @@ msgid ""
 "specified absolute Z. You can tune this setting for skipping lift on the "
 "first layers."
 msgstr ""
-"If you set this to a positive value, Z lift will only take place above the "
-"specified absolute Z. You can tune this setting for skipping lift on the "
-"first layers."
+"Si vous indiquez une valeur positive, le levage de l'axe Z ne sera déclenché "
+"qu'à partir de la valeur absolue indiquée pour l'axe Z. Vous pouvez modifier "
+"ce réglage pour éviter le levage de l'axe Z sur les premières couches."
 
 #: src/libslic3r/PrintConfig.cpp:1507
 msgid "Below Z"
-msgstr "Below Z"
+msgstr "En-deçà de Z"
 
 #: src/libslic3r/PrintConfig.cpp:1508
 msgid "Only lift Z below"
-msgstr "Only lift Z below"
+msgstr "Lever Z seulement en-dessous de"
 
 #: src/libslic3r/PrintConfig.cpp:1509
 msgid ""
@@ -6435,41 +6418,43 @@ msgid ""
 "specified absolute Z. You can tune this setting for limiting lift to the "
 "first layers."
 msgstr ""
-"If you set this to a positive value, Z lift will only take place below the "
-"specified absolute Z. You can tune this setting for limiting lift to the "
-"first layers."
+"Si vous indiquez une valeur positive, le levage de l'axe Z ne sera déclenché "
+"que jusqu'à la valeur absolue indiquée pour l'axe Z. Vous pouvez modifier ce "
+"réglage pour limiter le levage de l'axe Z aux premières couches."
 
 #: src/libslic3r/PrintConfig.cpp:1517 src/libslic3r/PrintConfig.cpp:1525
 msgid "Extra length on restart"
-msgstr "Extra length on restart"
+msgstr "Longueur supplémentaire à la reprise"
 
 #: src/libslic3r/PrintConfig.cpp:1518
 msgid ""
 "When the retraction is compensated after the travel move, the extruder will "
 "push this additional amount of filament. This setting is rarely needed."
 msgstr ""
-"When the retraction is compensated after the travel move, the extruder will "
-"push this additional amount of filament. This setting is rarely needed."
+"Lorsque la rétractation est compensée après un déplacement, l'extruder "
+"exprimera cette quantité de filament en plus. Ce réglage est rarement "
+"nécessaire."
 
 #: src/libslic3r/PrintConfig.cpp:1526
 msgid ""
 "When the retraction is compensated after changing tool, the extruder will "
 "push this additional amount of filament."
 msgstr ""
-"When the retraction is compensated after changing tool, the extruder will "
-"push this additional amount of filament."
+"Lorsque la rétractation est compensée après un changement d'outil, "
+"l'extrudeur exprimera cette quantité de filament en plus."
 
 #: src/libslic3r/PrintConfig.cpp:1533 src/libslic3r/PrintConfig.cpp:1534
 msgid "Retraction Speed"
-msgstr "Retraction Speed"
+msgstr "Vitesse de Rétractation"
 
 #: src/libslic3r/PrintConfig.cpp:1535
 msgid "The speed for retractions (it only applies to the extruder motor)."
-msgstr "The speed for retractions (it only applies to the extruder motor)."
+msgstr ""
+"La vitesse des rétractations (ne s'applique qu'au moteur de l'extrudeur)."
 
 #: src/libslic3r/PrintConfig.cpp:1541 src/libslic3r/PrintConfig.cpp:1542
 msgid "Deretraction Speed"
-msgstr "Deretraction Speed"
+msgstr "Vitesse de Réinsertion"
 
 #: src/libslic3r/PrintConfig.cpp:1543
 msgid ""
@@ -6477,29 +6462,29 @@ msgid ""
 "applies to the extruder motor). If left to zero, the retraction speed is "
 "used."
 msgstr ""
-"The speed for loading of a filament into extruder after retraction (it only "
-"applies to the extruder motor). If left to zero, the retraction speed is "
-"used."
+"La vitesse de chargement d'un filament dans l'extrudeur après une "
+"rétractation (ne s'applique qu'au moteur de l'extrudeur). Si cette valeur "
+"reste sur zéro, la vitesse de rétraction est utilisée."
 
 #: src/libslic3r/PrintConfig.cpp:1550
 msgid "Seam position"
-msgstr "Seam position"
+msgstr "Position de la jointure"
 
 #: src/libslic3r/PrintConfig.cpp:1552
 msgid "Position of perimeters starting points."
-msgstr "Position of perimeters starting points."
+msgstr "Position des points de départ des périmètres."
 
 #: src/libslic3r/PrintConfig.cpp:1558
 msgid "Random"
-msgstr "Random"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1559
 msgid "Nearest"
-msgstr "Nearest"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1560
 msgid "Aligned"
-msgstr "Aligned"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1568
 msgid "Direction"
@@ -6507,67 +6492,67 @@ msgstr "Direction"
 
 #: src/libslic3r/PrintConfig.cpp:1570
 msgid "Preferred direction of the seam"
-msgstr "Preferred direction of the seam"
+msgstr "Direction préférée de la jointure"
 
 #: src/libslic3r/PrintConfig.cpp:1571
 msgid "Seam preferred direction"
-msgstr "Seam preferred direction"
+msgstr "Direction préférée de la jointure"
 
 #: src/libslic3r/PrintConfig.cpp:1578
 msgid "Jitter"
-msgstr "Jitter"
+msgstr "Gigue"
 
 #: src/libslic3r/PrintConfig.cpp:1580
 msgid "Seam preferred direction jitter"
-msgstr "Seam preferred direction jitter"
+msgstr "Gigue de la direction préférée de la jointure"
 
 #: src/libslic3r/PrintConfig.cpp:1581
 msgid "Preferred direction of the seam - jitter"
-msgstr "Preferred direction of the seam - jitter"
+msgstr "Direction préférée de la jointure - gigue"
 
 #: src/libslic3r/PrintConfig.cpp:1591
 msgid "USB/serial port for printer connection."
-msgstr "USB/serial port for printer connection."
+msgstr "Port USB/Série pour la connexion de l'imprimante."
 
 #: src/libslic3r/PrintConfig.cpp:1598
 msgid "Serial port speed"
-msgstr "Serial port speed"
+msgstr "Vitesse du port série"
 
 #: src/libslic3r/PrintConfig.cpp:1599
 msgid "Speed (baud) of USB/serial port for printer connection."
-msgstr "Speed (baud) of USB/serial port for printer connection."
+msgstr "Vitesse (baud) du port USB/série pour la connexion à l'imprimante."
 
 #: src/libslic3r/PrintConfig.cpp:1608
 msgid "Distance from object"
-msgstr "Distance from object"
+msgstr "Distance de l'objet"
 
 #: src/libslic3r/PrintConfig.cpp:1609
 msgid ""
 "Distance between skirt and object(s). Set this to zero to attach the skirt "
 "to the object(s) and get a brim for better adhesion."
 msgstr ""
-"Distance between skirt and object(s). Set this to zero to attach the skirt "
-"to the object(s) and get a brim for better adhesion."
+"Distance entre le ou les objet(s) et la jupe. Mettez zéro pour attacher la "
+"jupe a(ux) objet(s) et obtenir une bordure pour une meilleure adhésion."
 
 #: src/libslic3r/PrintConfig.cpp:1616
 msgid "Skirt height"
-msgstr "Skirt height"
+msgstr "Hauteur de la jupe"
 
 #: src/libslic3r/PrintConfig.cpp:1617
 msgid ""
 "Height of skirt expressed in layers. Set this to a tall value to use skirt "
 "as a shield against drafts."
 msgstr ""
-"Height of skirt expressed in layers. Set this to a tall value to use skirt "
-"as a shield against drafts."
+"Hauteur de la jupe exprimée en couches. Mettez une valeur élevée pour "
+"utiliser la jupe comme un bouclier contre les flux d'airs."
 
 #: src/libslic3r/PrintConfig.cpp:1624
 msgid "Loops (minimum)"
-msgstr "Loops (minimum)"
+msgstr "Boucles (minimum)"
 
 #: src/libslic3r/PrintConfig.cpp:1625
 msgid "Skirt Loops"
-msgstr "Skirt Loops"
+msgstr "Boucles de la Jupe"
 
 #: src/libslic3r/PrintConfig.cpp:1626
 msgid ""
@@ -6575,25 +6560,26 @@ msgid ""
 "set, the number of loops might be greater than the one configured here. Set "
 "this to zero to disable skirt completely."
 msgstr ""
-"Number of loops for the skirt. If the Minimum Extrusion Length option is "
-"set, the number of loops might be greater than the one configured here. Set "
-"this to zero to disable skirt completely."
+"Nombre de boucles pour la jupe. Si la Longueur Minimale d'Extrusion est "
+"paramétrée, le nombre de boucles minimal sera plus grand que celui configuré "
+"ici. Mettez à zéro pour désactiver complètement la jupe."
 
 #: src/libslic3r/PrintConfig.cpp:1634
 msgid "Slow down if layer print time is below"
-msgstr "Slow down if layer print time is below"
+msgstr "Ralentir si le temps d'impression de la couche est inférieur à"
 
 #: src/libslic3r/PrintConfig.cpp:1635
 msgid ""
 "If layer print time is estimated below this number of seconds, print moves "
 "speed will be scaled down to extend duration to this value."
 msgstr ""
-"If layer print time is estimated below this number of seconds, print moves "
-"speed will be scaled down to extend duration to this value."
+"Si le temps d'impression estimé de la couche est inférieur à ce nombre de "
+"secondes, la vitesse des déplacements d'impression sera réduite afin "
+"d'atteindre cette valeur."
 
 #: src/libslic3r/PrintConfig.cpp:1645
 msgid "Small perimeters"
-msgstr "Small perimeters"
+msgstr "Périmètres courts"
 
 #: src/libslic3r/PrintConfig.cpp:1647
 msgid ""
@@ -6601,21 +6587,23 @@ msgid ""
 "6.5mm (usually holes). If expressed as percentage (for example: 80%) it will "
 "be calculated on the perimeters speed setting above. Set to zero for auto."
 msgstr ""
-"This separate setting will affect the speed of perimeters having radius <= "
-"6.5mm (usually holes). If expressed as percentage (for example: 80%) it will "
-"be calculated on the perimeters speed setting above. Set to zero for auto."
+"Ce réglage distinct affectera la vitesse des périmètre ayant un rayon <= "
+"6.5mm (les trous habituellement). Si cette valeur est exprimée en "
+"pourcentage (par exemple: 80%) elle sera calculée d'après le réglage de la "
+"vitesse de périmètre susmentionnée. Réglez sur zéro pour un ajustement "
+"automatique."
 
 #: src/libslic3r/PrintConfig.cpp:1657
 msgid "Solid infill threshold area"
-msgstr "Solid infill threshold area"
+msgstr "Surface de seuil pour le remplissage solide"
 
 #: src/libslic3r/PrintConfig.cpp:1659
 msgid ""
 "Force solid infill for regions having a smaller area than the specified "
 "threshold."
 msgstr ""
-"Force solid infill for regions having a smaller area than the specified "
-"threshold."
+"Forcer un remplissage solide pour les zones ayant une surface plus petite "
+"que la valeur indiquée."
 
 #: src/libslic3r/PrintConfig.cpp:1660
 msgid "mm²"
@@ -6623,15 +6611,15 @@ msgstr "mm²"
 
 #: src/libslic3r/PrintConfig.cpp:1666
 msgid "Solid infill extruder"
-msgstr "Solid infill extruder"
+msgstr "Extrudeur pour le remplissage solide"
 
 #: src/libslic3r/PrintConfig.cpp:1668
 msgid "The extruder to use when printing solid infill."
-msgstr "The extruder to use when printing solid infill."
+msgstr "L'extrudeur à utiliser pour imprimer les remplissages solides."
 
 #: src/libslic3r/PrintConfig.cpp:1674
 msgid "Solid infill every"
-msgstr "Solid infill every"
+msgstr "Remplissage solide toutes les"
 
 #: src/libslic3r/PrintConfig.cpp:1676
 msgid ""
@@ -6640,10 +6628,11 @@ msgid ""
 "will automatically choose the maximum possible number of layers to combine "
 "according to nozzle diameter and layer height."
 msgstr ""
-"This feature allows to force a solid layer every given number of layers. "
-"Zero to disable. You can set this to any value (for example 9999); Slic3r "
-"will automatically choose the maximum possible number of layers to combine "
-"according to nozzle diameter and layer height."
+"Cette fonction permet de forcer l'impression d'une couche solide après le "
+"nombre de couches indiqué. Réglez sur zéro pour la désactiver. Vous pouvez "
+"indiquer n'importe quelle valeur (par exemple 9999); Slic3r choisira "
+"automatiquement le nombre maximum de couches a combiner en fonction du "
+"diamètre de la buse et de l'épaisseur des couches."
 
 #: src/libslic3r/PrintConfig.cpp:1688
 msgid ""
@@ -6652,10 +6641,12 @@ msgid ""
 "otherwise 1.125 x nozzle diameter will be used. If expressed as percentage "
 "(for example 90%) it will be computed over layer height."
 msgstr ""
-"Set this to a non-zero value to set a manual extrusion width for infill for "
-"solid surfaces. If left zero, default extrusion width will be used if set, "
-"otherwise 1.125 x nozzle diameter will be used. If expressed as percentage "
-"(for example 90%) it will be computed over layer height."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la "
+"largeur d’extrusion pour le remplissage ou les surfaces solides. Si la "
+"valeur reste sur zéro, la largeur d’extrusion par défaut sera utilisée si "
+"définie, sinon la valeur 1.125 x diamètre de la buse sera utilisée. Si la "
+"valeur est exprimée en pourcentage (par exemple : 90%), elle sera calculée "
+"par rapport à la hauteur de couche."
 
 #: src/libslic3r/PrintConfig.cpp:1698
 msgid ""
@@ -6663,17 +6654,20 @@ msgid ""
 "This can be expressed as a percentage (for example: 80%) over the default "
 "infill speed above. Set to zero for auto."
 msgstr ""
-"Speed for printing solid regions (top/bottom/internal horizontal shells). "
-"This can be expressed as a percentage (for example: 80%) over the default "
-"infill speed above. Set to zero for auto."
+"Vitesse pour imprimer des zones solides (supérieures/inférieures/parois "
+"horizontales internes). Peut être exprimée en pourcentage (par exemple: 80%) "
+"de la vitesse de remplissage par défaut susmentionnée. Réglez sur zéro pour "
+"un ajustement automatique."
 
 #: src/libslic3r/PrintConfig.cpp:1710
 msgid "Number of solid layers to generate on top and bottom surfaces."
-msgstr "Number of solid layers to generate on top and bottom surfaces."
+msgstr ""
+"Nombre de couches solides à générer sur les surfaces supérieures et "
+"inférieures."
 
 #: src/libslic3r/PrintConfig.cpp:1716
 msgid "Spiral vase"
-msgstr "Spiral vase"
+msgstr "Vase spiral"
 
 #: src/libslic3r/PrintConfig.cpp:1717
 msgid ""
@@ -6683,15 +6677,16 @@ msgid ""
 "any number of bottom solid layers as well as skirt/brim loops. It won't work "
 "when printing more than an object."
 msgstr ""
-"This feature will raise Z gradually while printing a single-walled object in "
-"order to remove any visible seam. This option requires a single perimeter, "
-"no infill, no top solid layers and no support material. You can still set "
-"any number of bottom solid layers as well as skirt/brim loops. It won't work "
-"when printing more than an object."
+"Cette fonction élèvera le Z graduellement en cas d'impression d'un objet à "
+"paroi unique, afin de rendre invisibles les jointures. Cette option "
+"nécessite de n'avoir qu'un seul périmètre, de ne pas avoir de remplissage, "
+"ni de surface solide supérieure, ni de support. Vous pouvez toujours choisir "
+"le nombre de surface solides inférieures de même que les boucles des jupes "
+"et des bordures. Cela ne fonctionnera pas si vous imprimez plus d'un objet."
 
 #: src/libslic3r/PrintConfig.cpp:1725
 msgid "Temperature variation"
-msgstr "Temperature variation"
+msgstr "Variation de température"
 
 #: src/libslic3r/PrintConfig.cpp:1726
 msgid ""
@@ -6699,9 +6694,9 @@ msgid ""
 "a full-height \"sacrificial\" skirt on which the nozzles are periodically "
 "wiped."
 msgstr ""
-"Temperature difference to be applied when an extruder is not active. Enables "
-"a full-height \"sacrificial\" skirt on which the nozzles are periodically "
-"wiped."
+"Différence de température devant être appliquée quand un extrudeur n'est pas "
+"actif. Permet la génération d'un contour complet \"sacrificiel\" sur lequel "
+"les buses sont nettoyées régulièrement."
 
 #: src/libslic3r/PrintConfig.cpp:1736
 msgid ""
@@ -6713,13 +6708,15 @@ msgid ""
 "you can use placeholder variables for all Slic3r settings, so you can put a "
 "\"M109 S[first_layer_temperature]\" command wherever you want."
 msgstr ""
-"This start procedure is inserted at the beginning, after bed has reached the "
-"target temperature and extruder just started heating, and before extruder "
-"has finished heating. If Slic3r detects M104 or M190 in your custom codes, "
-"such commands will not be prepended automatically so you're free to "
-"customize the order of heating commands and other custom actions. Note that "
-"you can use placeholder variables for all Slic3r settings, so you can put a "
-"\"M109 S[first_layer_temperature]\" command wherever you want."
+"Cette procédure de démarrage est insérée au début, après que le plateau a "
+"atteint la température ciblée et lorsque l'extrudeur vient juste de "
+"commencer à chauffer, et avant que l'extrudeur ait terminé de chauffer. Si "
+"Slic3r détecte des commandes M104 ou M190 dans vos codes personnalisés, ces "
+"commandes ne seront pas ajoutées automatiquement ainsi vous serez libre de "
+"personnaliser l'ordre des commandes de chauffe et autres actions "
+"personnalisées. Notez que vous pouvez utiliser des variables génériques pour "
+"tous les réglages de Slic3r, donc vous pouvez mettre une commande "
+"\"M109S[first_layer_temperature]\" où vous le souhaitez."
 
 #: src/libslic3r/PrintConfig.cpp:1751
 msgid ""
@@ -6732,46 +6729,46 @@ msgid ""
 "S[first_layer_temperature]\" command wherever you want. If you have multiple "
 "extruders, the gcode is processed in extruder order."
 msgstr ""
-"This start procedure is inserted at the beginning, after any printer start "
-"gcode. This is used to override settings for a specific filament. If Slic3r "
-"detects M104, M109, M140 or M190 in your custom codes, such commands will "
-"not be prepended automatically so you're free to customize the order of "
-"heating commands and other custom actions. Note that you can use placeholder "
-"variables for all Slic3r settings, so you can put a \"M109 "
-"S[first_layer_temperature]\" command wherever you want. If you have multiple "
-"extruders, the gcode is processed in extruder order."
+"Cette procédure de démarrage est insérée au début, après un gcode de "
+"démarrage de l'imprimante. Elle est utilisée pour remplacer les réglages "
+"pour un filament spécifique. Si Slic3r détecte des commandes M104, M109, "
+"M140 ou M190 dans vos codes personnalisés ces commandes ne seront pas "
+"ajoutées automatiquement, de cette manière vous pouvez personnaliser la "
+"procédure de chauffe et autres actions. Notez que vous pouvez utiliser des "
+"variables génériques pour tous les réglages de Slic3r, donc vous pouvez "
+"saisir une commande \"M109 S[first_layer_temperature]\" où vous voulez. Si "
+"vous avez plusieurs extrudeurs, le G-Code sera exécuté dans l'ordre des "
+"extrudeurs."
 
 #: src/libslic3r/PrintConfig.cpp:1766
 msgid "Single Extruder Multi Material"
-msgstr "Single Extruder Multi Material"
+msgstr "Extrudeur Unique Multi-Matériaux"
 
 #: src/libslic3r/PrintConfig.cpp:1767
 msgid "The printer multiplexes filaments into a single hot end."
-msgstr "The printer multiplexes filaments into a single hot end."
+msgstr "L'imprimante multiplexe les filaments vers une seule tête d'extrusion."
 
 #: src/libslic3r/PrintConfig.cpp:1772
 msgid "Prime all printing extruders"
-msgstr "Prime all printing extruders"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1773
 msgid ""
 "If enabled, all printing extruders will be primed at the front edge of the "
 "print bed at the start of the print."
 msgstr ""
-"If enabled, all printing extruders will be primed at the front edge of the "
-"print bed at the start of the print."
 
 #: src/libslic3r/PrintConfig.cpp:1778
 msgid "Generate support material"
-msgstr "Generate support material"
+msgstr "Générer des supports"
 
 #: src/libslic3r/PrintConfig.cpp:1780
 msgid "Enable support material generation."
-msgstr "Enable support material generation."
+msgstr "Activer la génération des supports."
 
 #: src/libslic3r/PrintConfig.cpp:1784
 msgid "Auto generated supports"
-msgstr "Auto generated supports"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1786
 msgid ""
@@ -6779,45 +6776,42 @@ msgid ""
 "threshold value. If unchecked, supports will be generated inside the "
 "\"Support Enforcer\" volumes only."
 msgstr ""
-"If checked, supports will be generated automatically based on the overhang "
-"threshold value. If unchecked, supports will be generated inside the "
-"\"Support Enforcer\" volumes only."
 
 #: src/libslic3r/PrintConfig.cpp:1792
 msgid "XY separation between an object and its support"
-msgstr "XY separation between an object and its support"
+msgstr "Séparation XY entre un objet et son support"
 
 #: src/libslic3r/PrintConfig.cpp:1794
 msgid ""
 "XY separation between an object and its support. If expressed as percentage "
 "(for example 50%), it will be calculated over external perimeter width."
 msgstr ""
-"XY separation between an object and its support. If expressed as percentage "
-"(for example 50%), it will be calculated over external perimeter width."
+"Séparation XY entre un objet et son support. Si la valeur est exprimée en "
+"pourcentage (par exemple 50%), elle sera calculée à partir de la largeur du "
+"périmètre extérieur."
 
 #: src/libslic3r/PrintConfig.cpp:1804
 msgid "Pattern angle"
-msgstr "Pattern angle"
+msgstr "Angle du motif"
 
 #: src/libslic3r/PrintConfig.cpp:1806
 msgid ""
 "Use this setting to rotate the support material pattern on the horizontal "
 "plane."
 msgstr ""
-"Use this setting to rotate the support material pattern on the horizontal "
-"plane."
+"Utiliser ce réglage pour orienter le motif du support sur le plan horizontal."
 
-#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:2421
+#: src/libslic3r/PrintConfig.cpp:1816 src/libslic3r/PrintConfig.cpp:2423
 msgid ""
 "Only create support if it lies on a build plate. Don't create support on a "
 "print."
 msgstr ""
-"Only create support if it lies on a build plate. Don't create support on a "
-"print."
+"Créer uniquement des supports reposant sur le plateau. Ne pas créer pas de "
+"supports sur une impression."
 
 #: src/libslic3r/PrintConfig.cpp:1822
 msgid "Contact Z distance"
-msgstr "Contact Z distance"
+msgstr "Distance de contact Z"
 
 #: src/libslic3r/PrintConfig.cpp:1824
 msgid ""
@@ -6825,21 +6819,21 @@ msgid ""
 "this to 0 will also prevent Slic3r from using bridge flow and speed for the "
 "first object layer."
 msgstr ""
-"The vertical distance between object and support material interface. Setting "
-"this to 0 will also prevent Slic3r from using bridge flow and speed for the "
-"first object layer."
+"Distance verticale entre l'objet et l'intercalaire du support. Régler cette "
+"valeur sur zéro empêchera Slic3r d'utiliser la vitesse et le débit des ponts "
+"pour la première couche de l'objet."
 
 #: src/libslic3r/PrintConfig.cpp:1831
 msgid "soluble"
-msgstr "soluble"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1832
 msgid "detachable"
-msgstr "detachable"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1837
 msgid "Enforce support for the first"
-msgstr "Enforce support for the first"
+msgstr "Renforcer le support sur le(s) première(s)"
 
 #: src/libslic3r/PrintConfig.cpp:1839
 msgid ""
@@ -6848,26 +6842,26 @@ msgid ""
 "regardless of any angle threshold. This is useful for getting more adhesion "
 "of objects having a very thin or poor footprint on the build plate."
 msgstr ""
-"Generate support material for the specified number of layers counting from "
-"bottom, regardless of whether normal support material is enabled or not and "
-"regardless of any angle threshold. This is useful for getting more adhesion "
-"of objects having a very thin or poor footprint on the build plate."
+"Générer des supports pour le nombre de couches spécifié à partir du bas, que "
+"les supports normaux soient activés ou non et sans tenir compte de seuils "
+"d'inclinaison. Ceci est utile pour obtenir une meilleure adhésion pour des "
+"objets ayant une surface de contact très fine ou limitée sur le plateau."
 
 #: src/libslic3r/PrintConfig.cpp:1844
 msgid "Enforce support for the first n layers"
-msgstr "Enforce support for the first n layers"
+msgstr "Renforcer le support pour les n premières couches"
 
 #: src/libslic3r/PrintConfig.cpp:1850
 msgid "Support material/raft/skirt extruder"
-msgstr "Support material/raft/skirt extruder"
+msgstr "Extrudeur pour support/raft/jupe"
 
 #: src/libslic3r/PrintConfig.cpp:1852
 msgid ""
 "The extruder to use when printing support material, raft and skirt (1+, 0 to "
 "use the current extruder to minimize tool changes)."
 msgstr ""
-"The extruder to use when printing support material, raft and skirt (1+, 0 to "
-"use the current extruder to minimize tool changes)."
+"L'extrudeur à utiliser pour imprimer des supports, du raft ou des contours "
+"(1+,0 pour utiliser l'extrudeur actuel et limiter les changements d'outil)."
 
 #: src/libslic3r/PrintConfig.cpp:1861
 msgid ""
@@ -6876,52 +6870,56 @@ msgid ""
 "otherwise nozzle diameter will be used. If expressed as percentage (for "
 "example 90%) it will be computed over layer height."
 msgstr ""
-"Set this to a non-zero value to set a manual extrusion width for support "
-"material. If left zero, default extrusion width will be used if set, "
-"otherwise nozzle diameter will be used. If expressed as percentage (for "
-"example 90%) it will be computed over layer height."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la "
+"largeur d’extrusion pour les supports. Si la valeur reste sur zéro, la "
+"largeur d’extrusion par défaut sera utilisée si définie, sinon le diamètre "
+"de la buse sera utilisée. Si la valeur est exprimée en pourcentage (par "
+"exemple : 90%), elle sera calculée par rapport à la hauteur de couche."
 
 #: src/libslic3r/PrintConfig.cpp:1869
 msgid "Interface loops"
-msgstr "Interface loops"
+msgstr "Boucles d'interface"
 
 #: src/libslic3r/PrintConfig.cpp:1871
 msgid ""
 "Cover the top contact layer of the supports with loops. Disabled by default."
 msgstr ""
-"Cover the top contact layer of the supports with loops. Disabled by default."
+"Recouvrir la couche de contact supérieure des supports avec des boucles. "
+"Désactivé par défaut."
 
 #: src/libslic3r/PrintConfig.cpp:1876
 msgid "Support material/raft interface extruder"
-msgstr "Support material/raft interface extruder"
+msgstr "Extrudeur pour l'interface des supports/du radeau"
 
 #: src/libslic3r/PrintConfig.cpp:1878
 msgid ""
 "The extruder to use when printing support material interface (1+, 0 to use "
 "the current extruder to minimize tool changes). This affects raft too."
 msgstr ""
-"The extruder to use when printing support material interface (1+, 0 to use "
-"the current extruder to minimize tool changes). This affects raft too."
+"L'extrudeur à utiliser pour imprimer les intercalaires du support (1+,0 pour "
+"utiliser l'extrudeur actuel et limiter les changements d'outil). Cela "
+"affecte également le raft."
 
 #: src/libslic3r/PrintConfig.cpp:1885
 msgid "Interface layers"
-msgstr "Interface layers"
+msgstr "Couches d'interface"
 
 #: src/libslic3r/PrintConfig.cpp:1887
 msgid ""
 "Number of interface layers to insert between the object(s) and support "
 "material."
 msgstr ""
-"Number of interface layers to insert between the object(s) and support "
-"material."
+"Nombre de couches d'interface à insérer entre le(s) objet(s) et les supports."
 
 #: src/libslic3r/PrintConfig.cpp:1894
 msgid "Interface pattern spacing"
-msgstr "Interface pattern spacing"
+msgstr "Espacement du motif d'interface"
 
 #: src/libslic3r/PrintConfig.cpp:1896
 msgid "Spacing between interface lines. Set zero to get a solid interface."
-msgstr "Spacing between interface lines. Set zero to get a solid interface."
+msgstr ""
+"Espacement entre les lignes d'interface. Mettez à zéro pour obtenir une "
+"interface solide."
 
 #: src/libslic3r/PrintConfig.cpp:1905
 msgid ""
@@ -6929,49 +6927,50 @@ msgid ""
 "percentage (for example 50%) it will be calculated over support material "
 "speed."
 msgstr ""
-"Speed for printing support material interface layers. If expressed as "
-"percentage (for example 50%) it will be calculated over support material "
-"speed."
+"Vitesse d'impression des couches d'interface des supports. Si exprimée en "
+"pourcentage (par exemple 50%), elle sera calculée à partir de la vitesse "
+"d'impression des supports."
 
 #: src/libslic3r/PrintConfig.cpp:1914
 msgid "Pattern"
-msgstr "Pattern"
+msgstr "Motif"
 
 #: src/libslic3r/PrintConfig.cpp:1916
 msgid "Pattern used to generate support material."
-msgstr "Pattern used to generate support material."
+msgstr "Motif utilisé pour générer les supports."
 
 #: src/libslic3r/PrintConfig.cpp:1922
 msgid "Rectilinear grid"
-msgstr "Rectilinear grid"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:1928
 msgid "Pattern spacing"
-msgstr "Pattern spacing"
+msgstr "Espacement du motif"
 
 #: src/libslic3r/PrintConfig.cpp:1930
 msgid "Spacing between support material lines."
-msgstr "Spacing between support material lines."
+msgstr "Espacement entre les lignes des supports."
 
 #: src/libslic3r/PrintConfig.cpp:1939
 msgid "Speed for printing support material."
-msgstr "Speed for printing support material."
+msgstr "Vitesse d'impression du support."
 
 #: src/libslic3r/PrintConfig.cpp:1946
 msgid "Synchronize with object layers"
-msgstr "Synchronize with object layers"
+msgstr "Synchroniser avec les couches de l'objet"
 
 #: src/libslic3r/PrintConfig.cpp:1948
 msgid ""
 "Synchronize support layers with the object print layers. This is useful with "
 "multi-material printers, where the extruder switch is expensive."
 msgstr ""
-"Synchronize support layers with the object print layers. This is useful with "
-"multi-material printers, where the extruder switch is expensive."
+"Synchroniser les couches du support avec les couches d'impression de "
+"l'objet. Cela est utile pour les imprimantes multi-matériaux, pour "
+"lesquelles le changement d'extrudeur est onéreux."
 
 #: src/libslic3r/PrintConfig.cpp:1954
 msgid "Overhang threshold"
-msgstr "Overhang threshold"
+msgstr "Seuil de surplomb"
 
 #: src/libslic3r/PrintConfig.cpp:1956
 msgid ""
@@ -6981,47 +6980,49 @@ msgid ""
 "that you can print without support material. Set to zero for automatic "
 "detection (recommended)."
 msgstr ""
-"Support material will not be generated for overhangs whose slope angle (90° "
-"= vertical) is above the given threshold. In other words, this value "
-"represent the most horizontal slope (measured from the horizontal plane) "
-"that you can print without support material. Set to zero for automatic "
-"detection (recommended)."
+"Le support ne sera pas généré pour les surplombs dont l'inclinaison (90° = "
+"vertical) dépasse le seuil défini. Autrement dit, cette valeur représente "
+"l'inclinaison horizontale maximum (mesurée à partir du plan horizontal) que "
+"vous pouvez imprimer sans support. Réglez sur zéro pour une détection "
+"automatique (recommandé)."
 
 #: src/libslic3r/PrintConfig.cpp:1968
 msgid "With sheath around the support"
-msgstr "With sheath around the support"
+msgstr "Avec une enveloppe autour du support"
 
 #: src/libslic3r/PrintConfig.cpp:1970
 msgid ""
 "Add a sheath (a single perimeter line) around the base support. This makes "
 "the support more reliable, but also more difficult to remove."
 msgstr ""
-"Add a sheath (a single perimeter line) around the base support. This makes "
-"the support more reliable, but also more difficult to remove."
+"Ajouter une enveloppe (une ligne unique de périmètre) autour de la base du "
+"support. Ceci rend le support plus fiable, mais aussi plus difficile à "
+"retirer."
 
 #: src/libslic3r/PrintConfig.cpp:1977
 msgid ""
 "Extruder temperature for layers after the first one. Set this to zero to "
 "disable temperature control commands in the output."
 msgstr ""
-"Extruder temperature for layers after the first one. Set this to zero to "
-"disable temperature control commands in the output."
+"Température de l'extrudeur pour les couches après la première. Mettez zéro "
+"pour désactiver les commandes de contrôle de la température dans le fichier "
+"de sortie."
 
 #: src/libslic3r/PrintConfig.cpp:1979
 msgid "Temperature"
-msgstr "Temperature"
+msgstr "Température"
 
 #: src/libslic3r/PrintConfig.cpp:1985
 msgid "Detect thin walls"
-msgstr "Detect thin walls"
+msgstr "Détecter les parois fines"
 
 #: src/libslic3r/PrintConfig.cpp:1987
 msgid ""
 "Detect single-width walls (parts where two extrusions don't fit and we need "
 "to collapse them into a single trace)."
 msgstr ""
-"Detect single-width walls (parts where two extrusions don't fit and we need "
-"to collapse them into a single trace)."
+"Détecter les parois de largeur unique (où deux extrusions côte à côte ne "
+"rentrent pas et doivent êtres fusionnées en un seul trait)."
 
 #: src/libslic3r/PrintConfig.cpp:1993
 msgid "Threads"
@@ -7032,8 +7033,9 @@ msgid ""
 "Threads are used to parallelize long-running tasks. Optimal threads number "
 "is slightly above the number of available cores/processors."
 msgstr ""
-"Threads are used to parallelize long-running tasks. Optimal threads number "
-"is slightly above the number of available cores/processors."
+"Les threads sont utilisés pour paralléliser les calculs longs. Le nombre "
+"optimal de threads est légèrement supérieur au nombre de coeurs/processeurs "
+"disponibles."
 
 #: src/libslic3r/PrintConfig.cpp:2006
 msgid ""
@@ -7041,9 +7043,9 @@ msgid ""
 "you can use placeholder variables for all Slic3r settings as well as "
 "[previous_extruder] and [next_extruder]."
 msgstr ""
-"This custom code is inserted right before every extruder change. Note that "
-"you can use placeholder variables for all Slic3r settings as well as "
-"[previous_extruder] and [next_extruder]."
+"Ce code personnalisé est inséré juste avant chaque changement d'extrudeur. "
+"Notez que vous pouvez utiliser des variables génériques pour tous les "
+"réglages de Slic3r de même que [previous_extruder] et [next_extruder]."
 
 #: src/libslic3r/PrintConfig.cpp:2018
 msgid ""
@@ -7053,11 +7055,14 @@ msgid ""
 "will be used if set, otherwise nozzle diameter will be used. If expressed as "
 "percentage (for example 90%) it will be computed over layer height."
 msgstr ""
-"Set this to a non-zero value to set a manual extrusion width for infill for "
-"top surfaces. You may want to use thinner extrudates to fill all narrow "
-"regions and get a smoother finish. If left zero, default extrusion width "
-"will be used if set, otherwise nozzle diameter will be used. If expressed as "
-"percentage (for example 90%) it will be computed over layer height."
+"Réglez ce paramètre sur une valeur non-nulle pour définir manuellement la "
+"largeur d’extrusion pour le remplissage ou les surfaces supérieures. Vous "
+"voudrez peut-être utiliser des extrudats plus fins pour remplir les zones "
+"les plus étroites et obtenir des finitions plus lisses. Si la valeur reste "
+"sur zéro, la largeur d’extrusion par défaut sera utilisée si définie, sinon "
+"le diamètre de la buse sera utilisé. Si la valeur est exprimée en "
+"pourcentage (par exemple : 90%), elle sera calculée par rapport à la hauteur "
+"de couche."
 
 #: src/libslic3r/PrintConfig.cpp:2029
 msgid ""
@@ -7067,51 +7072,56 @@ msgid ""
 "percentage (for example: 80%) over the solid infill speed above. Set to zero "
 "for auto."
 msgstr ""
-"Speed for printing top solid layers (it only applies to the uppermost "
-"external layers and not to their internal solid layers). You may want to "
-"slow down this to get a nicer surface finish. This can be expressed as a "
-"percentage (for example: 80%) over the solid infill speed above. Set to zero "
-"for auto."
+"Vitesse pour imprimer les couches solides supérieures (ne s'applique qu'aux "
+"couches externes les plus hautes et pas aux couches internes solides). Vous "
+"voudrez peut-être abaisser cette vitesse afin d'avoir une finition de "
+"surface plus nette. Peut être exprimé en pourcentage (par exemple: 80%) de "
+"la vitesse de remplissage solide susmentionnée. Réglez sur zéro pour un "
+"ajustement automatique."
 
 #: src/libslic3r/PrintConfig.cpp:2043
 msgid "Number of solid layers to generate on top surfaces."
-msgstr "Number of solid layers to generate on top surfaces."
+msgstr "Nombre de couches solides à générer sur les surfaces supérieures."
 
 #: src/libslic3r/PrintConfig.cpp:2044
 msgid "Top solid layers"
-msgstr "Top solid layers"
+msgstr "Couches supérieures solides"
 
 #: src/libslic3r/PrintConfig.cpp:2050
 msgid "Speed for travel moves (jumps between distant extrusion points)."
-msgstr "Speed for travel moves (jumps between distant extrusion points)."
+msgstr ""
+"Vitesse pour les déplacements (trajet entre deux points d'extrusion "
+"distants)."
 
 #: src/libslic3r/PrintConfig.cpp:2058
 msgid "Use firmware retraction"
-msgstr "Use firmware retraction"
+msgstr "Utiliser la rétractation du firmware"
 
 #: src/libslic3r/PrintConfig.cpp:2059
 msgid ""
 "This experimental setting uses G10 and G11 commands to have the firmware "
 "handle the retraction. This is only supported in recent Marlin."
 msgstr ""
-"This experimental setting uses G10 and G11 commands to have the firmware "
-"handle the retraction. This is only supported in recent Marlin."
+"Ce réglage expérimental utilise les commandes G10 et G11 pour laisser le "
+"firmware gérer la rétractation. Utilisable seulement par les versions "
+"récentes de Marlin."
 
 #: src/libslic3r/PrintConfig.cpp:2065
 msgid "Use relative E distances"
-msgstr "Use relative E distances"
+msgstr "Utiliser des valeurs E relatives"
 
 #: src/libslic3r/PrintConfig.cpp:2066
 msgid ""
 "If your firmware requires relative E values, check this, otherwise leave it "
 "unchecked. Most firmwares use absolute values."
 msgstr ""
-"If your firmware requires relative E values, check this, otherwise leave it "
-"unchecked. Most firmwares use absolute values."
+"Si votre firmware requiert des valeurs relatives pour E, cochez cette case, "
+"sinon laissez-la décochée. La plupart des firmwares utilisent des valeurs "
+"absolues."
 
 #: src/libslic3r/PrintConfig.cpp:2072
 msgid "Use volumetric E"
-msgstr "Use volumetric E"
+msgstr "E Volumétrique"
 
 #: src/libslic3r/PrintConfig.cpp:2073
 msgid ""
@@ -7122,48 +7132,51 @@ msgid ""
 "filament diameter associated to the filament selected in Slic3r. This is "
 "only supported in recent Marlin."
 msgstr ""
-"This experimental setting uses outputs the E values in cubic millimeters "
-"instead of linear millimeters. If your firmware doesn't already know "
-"filament diameter(s), you can put commands like 'M200 D[filament_diameter_0] "
-"T0' in your start G-code in order to turn volumetric mode on and use the "
-"filament diameter associated to the filament selected in Slic3r. This is "
-"only supported in recent Marlin."
+"Cette fonction expérimentale génère des valeurs de E en millimètres cubiques "
+"au lieu de millimètres linéaires. Si votre firmware ne connait pas déjà le "
+"diamètre du filament, vous pouvez saisir une commande comme 'M200 "
+"D[filament_diameter_0] T0' dans votre G-Code de début pour activer le mode "
+"volumétrique, et utiliser le diamètre de filament associé au filament choisi "
+"dans Slic3r. Cette fonction n'est utilisable que dans les versions récentes "
+"de Marlin."
 
 #: src/libslic3r/PrintConfig.cpp:2083
 msgid "Enable variable layer height feature"
-msgstr "Enable variable layer height feature"
+msgstr "Activer la fonction de hauteur de couche variable"
 
 #: src/libslic3r/PrintConfig.cpp:2084
 msgid ""
 "Some printers or printer setups may have difficulties printing with a "
 "variable layer height. Enabled by default."
 msgstr ""
-"Some printers or printer setups may have difficulties printing with a "
-"variable layer height. Enabled by default."
+"Certaines imprimantes ou certains réglages d'imprimante peuvent rencontrer "
+"des difficultés pour imprimer avec une hauteur de couche variable. Activé "
+"par défaut."
 
 #: src/libslic3r/PrintConfig.cpp:2090
 msgid "Wipe while retracting"
-msgstr "Wipe while retracting"
+msgstr "Nettoyer lors des rétractations"
 
 #: src/libslic3r/PrintConfig.cpp:2091
 msgid ""
 "This flag will move the nozzle while retracting to minimize the possible "
 "blob on leaky extruders."
 msgstr ""
-"This flag will move the nozzle while retracting to minimize the possible "
-"blob on leaky extruders."
+"Cette option déplace la buse lors des rétractations, limitant ainsi "
+"l'apparition d'amas sur les extrudeurs ayant tendance à couler."
 
 #: src/libslic3r/PrintConfig.cpp:2098
 msgid ""
 "Multi material printers may need to prime or purge extruders on tool "
 "changes. Extrude the excess material into the wipe tower."
 msgstr ""
-"Multi material printers may need to prime or purge extruders on tool "
-"changes. Extrude the excess material into the wipe tower."
+"Les imprimantes multi-matériaux peuvent avoir besoin de préparer ou de "
+"purger leurs extrudeurs lors d'un changement d'outil. Extruder le matériau "
+"en excès dans la tour de nettoyage."
 
 #: src/libslic3r/PrintConfig.cpp:2104
 msgid "Purging volumes - load/unload volumes"
-msgstr "Purging volumes - load/unload volumes"
+msgstr "Volumes de purge - volumes de chargement/déchargement"
 
 #: src/libslic3r/PrintConfig.cpp:2105
 msgid ""
@@ -7171,21 +7184,22 @@ msgid ""
 "wipe tower. These values are used to simplify creation of the full purging "
 "volumes below. "
 msgstr ""
-"This vector saves required volumes to change from/to each tool used on the "
-"wipe tower. These values are used to simplify creation of the full purging "
-"volumes below. "
+"Ce vecteur enregistre les volumes requis pour changer l'outil utilisé pour "
+"la tour de nettoyage. Ces valeurs sont utilisées pour simplifier la création "
+"des volumes de purge complets ci-dessous. "
 
 #: src/libslic3r/PrintConfig.cpp:2111
 msgid "Purging volumes - matrix"
-msgstr "Purging volumes - matrix"
+msgstr "Volumes de purge - matrice"
 
 #: src/libslic3r/PrintConfig.cpp:2112
 msgid ""
 "This matrix describes volumes (in cubic milimetres) required to purge the "
 "new filament on the wipe tower for any given pair of tools. "
 msgstr ""
-"This matrix describes volumes (in cubic milimetres) required to purge the "
-"new filament on the wipe tower for any given pair of tools. "
+"Cette matrice décrit les volumes (en millimètres cube) nécessaires pour "
+"purger le nouveau filament dans la tour de nettoyage pour une paire d'outils "
+"donnée. "
 
 #: src/libslic3r/PrintConfig.cpp:2121
 msgid "Position X"
@@ -7193,7 +7207,7 @@ msgstr "Position X"
 
 #: src/libslic3r/PrintConfig.cpp:2122
 msgid "X coordinate of the left front corner of a wipe tower"
-msgstr "X coordinate of the left front corner of a wipe tower"
+msgstr "Coordonnée X du coin avant gauche d'une tour de nettoyage"
 
 #: src/libslic3r/PrintConfig.cpp:2128
 msgid "Position Y"
@@ -7201,27 +7215,27 @@ msgstr "Position Y"
 
 #: src/libslic3r/PrintConfig.cpp:2129
 msgid "Y coordinate of the left front corner of a wipe tower"
-msgstr "Y coordinate of the left front corner of a wipe tower"
+msgstr "Coordonnée Y du coin avant gauche d'une tour de nettoyage"
 
 #: src/libslic3r/PrintConfig.cpp:2136
 msgid "Width of a wipe tower"
-msgstr "Width of a wipe tower"
+msgstr "Largeur d'une tour de nettoyage"
 
 #: src/libslic3r/PrintConfig.cpp:2142
 msgid "Wipe tower rotation angle"
-msgstr "Wipe tower rotation angle"
+msgstr "Angle de rotation de la tour de nettoyage"
 
 #: src/libslic3r/PrintConfig.cpp:2143
 msgid "Wipe tower rotation angle with respect to x-axis "
-msgstr "Wipe tower rotation angle with respect to x-axis "
+msgstr "Angle de rotation de la tour de nettoyage par rapport à l'axe X "
 
-#: src/libslic3r/PrintConfig.cpp:2144 src/libslic3r/PrintConfig.cpp:2565
+#: src/libslic3r/PrintConfig.cpp:2144 src/libslic3r/PrintConfig.cpp:2570
 msgid "degrees"
-msgstr "degrees"
+msgstr "degrés"
 
 #: src/libslic3r/PrintConfig.cpp:2150
 msgid "Wipe into this object's infill"
-msgstr "Wipe into this object's infill"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2151
 msgid ""
@@ -7229,13 +7243,10 @@ msgid ""
 "the amount of waste but may result in longer print time  due to additional "
 "travel moves."
 msgstr ""
-"Purging after toolchange will done inside this object's infills. This lowers "
-"the amount of waste but may result in longer print time  due to additional "
-"travel moves."
 
 #: src/libslic3r/PrintConfig.cpp:2158
 msgid "Wipe into this object"
-msgstr "Wipe into this object"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2159
 msgid ""
@@ -7243,21 +7254,19 @@ msgid ""
 "that would otherwise end up in the wipe tower and decrease print time. "
 "Colours of the objects will be mixed as a result."
 msgstr ""
-"Object will be used to purge the nozzle after a toolchange to save material "
-"that would otherwise end up in the wipe tower and decrease print time. "
-"Colours of the objects will be mixed as a result."
 
 #: src/libslic3r/PrintConfig.cpp:2165
 msgid "Maximal bridging distance"
-msgstr "Maximal bridging distance"
+msgstr "Distance maximale de pont"
 
 #: src/libslic3r/PrintConfig.cpp:2166
 msgid "Maximal distance between supports on sparse infill sections. "
-msgstr "Maximal distance between supports on sparse infill sections. "
+msgstr ""
+"Distance maximale entre les supports sur les sections de remplissage épars. "
 
 #: src/libslic3r/PrintConfig.cpp:2172
 msgid "XY Size Compensation"
-msgstr "XY Size Compensation"
+msgstr "Compensation de Taille XY"
 
 #: src/libslic3r/PrintConfig.cpp:2174
 msgid ""
@@ -7265,13 +7274,13 @@ msgid ""
 "(negative = inwards, positive = outwards). This might be useful for fine-"
 "tuning hole sizes."
 msgstr ""
-"The object will be grown/shrunk in the XY plane by the configured value "
-"(negative = inwards, positive = outwards). This might be useful for fine-"
-"tuning hole sizes."
+"L'objet sera agrandi/réduit sur les plans XY selon la valeur indiquée "
+"(négatif = réduit, positif = agrandi). Ce réglage peut être utile pour un "
+"réglage fin des tailles de trous."
 
 #: src/libslic3r/PrintConfig.cpp:2182
 msgid "Z offset"
-msgstr "Z offset"
+msgstr "Décalage Z"
 
 #: src/libslic3r/PrintConfig.cpp:2183
 msgid ""
@@ -7280,42 +7289,43 @@ msgid ""
 "example, if your endstop zero actually leaves the nozzle 0.3mm far from the "
 "print bed, set this to -0.3 (or fix your endstop)."
 msgstr ""
-"This value will be added (or subtracted) from all the Z coordinates in the "
-"output G-code. It is used to compensate for bad Z endstop position: for "
-"example, if your endstop zero actually leaves the nozzle 0.3mm far from the "
-"print bed, set this to -0.3 (or fix your endstop)."
+"Cette valeur sera ajoutée (ou soustraite) de toutes les coordonnées Z dans "
+"le G-Code de sortie. Elle est utilisée pour compenser une mauvaise position "
+"de fin de course Z: par exemple si votre fin de course place votre buse à "
+"0.3mm au dessus du plateau, réglez cette valeur sur -0.3 (ou corrigez votre "
+"fin de course)."
 
 #: src/libslic3r/PrintConfig.cpp:2200
 msgid "Display width"
-msgstr "Display width"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2201
 msgid "Width of the display"
-msgstr "Width of the display"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2206
 msgid "Display height"
-msgstr "Display height"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2207
 msgid "Height of the display"
-msgstr "Height of the display"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2212
 msgid "Number of pixels in"
-msgstr "Number of pixels in"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2214
 msgid "Number of pixels in X"
-msgstr "Number of pixels in X"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2220
 msgid "Number of pixels in Y"
-msgstr "Number of pixels in Y"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2225
 msgid "Display orientation"
-msgstr "Display orientation"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2226
 msgid ""
@@ -7323,45 +7333,42 @@ msgid ""
 "will flip the meaning of display width and height parameters and the output "
 "images will be rotated by 90 degrees."
 msgstr ""
-"Set the actual LCD display orientation inside the SLA printer. Portrait mode "
-"will flip the meaning of display width and height parameters and the output "
-"images will be rotated by 90 degrees."
 
 #: src/libslic3r/PrintConfig.cpp:2232
 msgid "Landscape"
-msgstr "Landscape"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2233
 msgid "Portrait"
-msgstr "Portrait"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2238
 msgid "Fast"
-msgstr "Fast"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2239
 msgid "Fast tilt"
-msgstr "Fast tilt"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2240
 msgid "Time of the fast tilt"
-msgstr "Time of the fast tilt"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2247
 msgid "Slow"
-msgstr "Slow"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2248
 msgid "Slow tilt"
-msgstr "Slow tilt"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2249
 msgid "Time of the slow tilt"
-msgstr "Time of the slow tilt"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2256
 msgid "Area fill"
-msgstr "Area fill"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2257
 msgid ""
@@ -7369,572 +7376,551 @@ msgid ""
 "If the print area exceeds the specified value, \n"
 "then a slow tilt will be used, otherwise - a fast tilt"
 msgstr ""
-"The percentage of the bed area. \n"
-"If the print area exceeds the specified value, \n"
-"then a slow tilt will be used, otherwise - a fast tilt"
 
 #: src/libslic3r/PrintConfig.cpp:2264 src/libslic3r/PrintConfig.cpp:2265
 #: src/libslic3r/PrintConfig.cpp:2266
 msgid "Printer scaling correction"
-msgstr "Printer scaling correction"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2272 src/libslic3r/PrintConfig.cpp:2273
 msgid "Printer absolute correction"
-msgstr "Printer absolute correction"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2274
 msgid ""
 "Will inflate or deflate the sliced 2D polygons according to the sign of the "
 "correction."
 msgstr ""
-"Will inflate or deflate the sliced 2D polygons according to the sign of the "
-"correction."
 
 #: src/libslic3r/PrintConfig.cpp:2280 src/libslic3r/PrintConfig.cpp:2281
 msgid "Printer gamma correction"
-msgstr "Printer gamma correction"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2282
-msgid "This will apply a gamm correction to the rasterized 2D polygons."
-msgstr "This will apply a gamm correction to the rasterized 2D polygons."
+msgid ""
+"This will apply a gamma correction to the rasterized 2D polygons. A gamma "
+"value of zero means thresholding with the threshold in the middle. This "
+"behaviour eliminates antialiasing without losing holes in polygons."
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2291 src/libslic3r/PrintConfig.cpp:2292
+#: src/libslic3r/PrintConfig.cpp:2293 src/libslic3r/PrintConfig.cpp:2294
 msgid "Initial layer height"
-msgstr "Initial layer height"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2298
+#: src/libslic3r/PrintConfig.cpp:2300
 msgid "Faded layers"
-msgstr "Faded layers"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2299
+#: src/libslic3r/PrintConfig.cpp:2301
 msgid ""
 "Number of the layers needed for the exposure time fade from initial exposure "
 "time to the exposure time"
 msgstr ""
-"Number of the layers needed for the exposure time fade from initial exposure "
-"time to the exposure time"
 
-#: src/libslic3r/PrintConfig.cpp:2306 src/libslic3r/PrintConfig.cpp:2307
+#: src/libslic3r/PrintConfig.cpp:2308 src/libslic3r/PrintConfig.cpp:2309
 msgid "Exposure time"
-msgstr "Exposure time"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2313 src/libslic3r/PrintConfig.cpp:2314
+#: src/libslic3r/PrintConfig.cpp:2315 src/libslic3r/PrintConfig.cpp:2316
 msgid "Initial exposure time"
-msgstr "Initial exposure time"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2320 src/libslic3r/PrintConfig.cpp:2321
+#: src/libslic3r/PrintConfig.cpp:2322 src/libslic3r/PrintConfig.cpp:2323
 msgid "Correction for expansion"
-msgstr "Correction for expansion"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2327
+#: src/libslic3r/PrintConfig.cpp:2329
 msgid "SLA print material notes"
-msgstr "SLA print material notes"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2328
+#: src/libslic3r/PrintConfig.cpp:2330
 msgid "You can put your notes regarding the SLA print material here."
-msgstr "You can put your notes regarding the SLA print material here."
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2336 src/libslic3r/PrintConfig.cpp:2347
+#: src/libslic3r/PrintConfig.cpp:2338 src/libslic3r/PrintConfig.cpp:2349
 msgid "Default SLA material profile"
-msgstr "Default SLA material profile"
-
-#: src/libslic3r/PrintConfig.cpp:2358
-msgid "Generate supports"
-msgstr "Generate supports"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2360
-msgid "Generate supports for the models"
-msgstr "Generate supports for the models"
+msgid "Generate supports"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2365
-msgid "Support head front diameter"
-msgstr "Support head front diameter"
+#: src/libslic3r/PrintConfig.cpp:2362
+msgid "Generate supports for the models"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2367
-msgid "Diameter of the pointing side of the head"
-msgstr "Diameter of the pointing side of the head"
+msgid "Support head front diameter"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2374
-msgid "Support head penetration"
-msgstr "Support head penetration"
+#: src/libslic3r/PrintConfig.cpp:2369
+msgid "Diameter of the pointing side of the head"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2376
-msgid "How much the pinhead has to penetrate the model surface"
-msgstr "How much the pinhead has to penetrate the model surface"
+msgid "Support head penetration"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2383
-msgid "Support head width"
-msgstr "Support head width"
+#: src/libslic3r/PrintConfig.cpp:2378
+msgid "How much the pinhead has to penetrate the model surface"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2385
-msgid "Width from the back sphere center to the front sphere center"
-msgstr "Width from the back sphere center to the front sphere center"
+msgid "Support head width"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2393
-msgid "Support pillar diameter"
-msgstr "Support pillar diameter"
+#: src/libslic3r/PrintConfig.cpp:2387
+msgid "Width from the back sphere center to the front sphere center"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2395
+msgid "Support pillar diameter"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:2397
 msgid "Diameter in mm of the support pillars"
-msgstr "Diameter in mm of the support pillars"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2403
+#: src/libslic3r/PrintConfig.cpp:2405
 msgid "Support pillar connection mode"
-msgstr "Support pillar connection mode"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2404
+#: src/libslic3r/PrintConfig.cpp:2406
 msgid ""
 "Controls the bridge type between two neigboring pillars. Can be zig-zag, "
 "cross (double zig-zag) or dynamic which will automatically switch between "
 "the first two depending on the distance of the two pillars."
 msgstr ""
-"Controls the bridge type between two neigboring pillars. Can be zig-zag, "
-"cross (double zig-zag) or dynamic which will automatically switch between "
-"the first two depending on the distance of the two pillars."
-
-#: src/libslic3r/PrintConfig.cpp:2412
-msgid "Zig-Zag"
-msgstr "Zig-Zag"
-
-#: src/libslic3r/PrintConfig.cpp:2413
-msgid "Cross"
-msgstr "Cross"
 
 #: src/libslic3r/PrintConfig.cpp:2414
-msgid "Dynamic"
-msgstr "Dynamic"
+msgid "Zig-Zag"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2426
-msgid "Pillar widening factor"
-msgstr "Pillar widening factor"
+#: src/libslic3r/PrintConfig.cpp:2415
+msgid "Cross"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:2416
+msgid "Dynamic"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2428
+msgid "Pillar widening factor"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:2430
 msgid ""
 "Merging bridges or pillars into another pillars can increase the radius. "
 "Zero means no increase, one means full increase."
 msgstr ""
-"Merging bridges or pillars into another pillars can increase the radius. "
-"Zero means no increase, one means full increase."
-
-#: src/libslic3r/PrintConfig.cpp:2437
-msgid "Support base diameter"
-msgstr "Support base diameter"
 
 #: src/libslic3r/PrintConfig.cpp:2439
-msgid "Diameter in mm of the pillar base"
-msgstr "Diameter in mm of the pillar base"
+msgid "Support base diameter"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2447
-msgid "Support base height"
-msgstr "Support base height"
+#: src/libslic3r/PrintConfig.cpp:2441
+msgid "Diameter in mm of the pillar base"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2449
-msgid "The height of the pillar base cone"
-msgstr "The height of the pillar base cone"
+msgid "Support base height"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2456
-msgid "Critical angle"
-msgstr "Critical angle"
+#: src/libslic3r/PrintConfig.cpp:2451
+msgid "The height of the pillar base cone"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2458
-msgid "The default angle for connecting support sticks and junctions."
-msgstr "The default angle for connecting support sticks and junctions."
+msgid "Critical angle"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2466
-msgid "Max bridge length"
-msgstr "Max bridge length"
+#: src/libslic3r/PrintConfig.cpp:2460
+msgid "The default angle for connecting support sticks and junctions."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2468
-msgid "The max length of a bridge"
-msgstr "The max length of a bridge"
+msgid "Max bridge length"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2475
-msgid "Max pillar linking distance"
-msgstr "Max pillar linking distance"
+#: src/libslic3r/PrintConfig.cpp:2470
+msgid "The max length of a bridge"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2477
+msgid "Max pillar linking distance"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:2479
 msgid ""
 "The max distance of two pillars to get linked with each other. A zero value "
 "will prohibit pillar cascading."
 msgstr ""
-"The max distance of two pillars to get linked with each other. A zero value "
-"will prohibit pillar cascading."
-
-#: src/libslic3r/PrintConfig.cpp:2485
-msgid "Object elevation"
-msgstr "Object elevation"
 
 #: src/libslic3r/PrintConfig.cpp:2487
-msgid "How much the supports should lift up the supported object."
-msgstr "How much the supports should lift up the supported object."
+msgid "Object elevation"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2495
-msgid "Support points density"
-msgstr "Support points density"
+#: src/libslic3r/PrintConfig.cpp:2489
+msgid "How much the supports should lift up the supported object."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2497
-msgid "This is a relative measure of support points density."
-msgstr "This is a relative measure of support points density."
+msgid "Support points density"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2503
-msgid "Minimal distance of the support points"
-msgstr "Minimal distance of the support points"
+#: src/libslic3r/PrintConfig.cpp:2499
+msgid "This is a relative measure of support points density."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2505
-msgid "No support points will be placed closer than this threshold."
-msgstr "No support points will be placed closer than this threshold."
+msgid "Minimal distance of the support points"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2511
-msgid "Use pad"
-msgstr "Use pad"
+#: src/libslic3r/PrintConfig.cpp:2507
+msgid "No support points will be placed closer than this threshold."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2513
-msgid "Add a pad underneath the supported model"
-msgstr "Add a pad underneath the supported model"
+msgid "Use pad"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2518
-msgid "Pad wall thickness"
-msgstr "Pad wall thickness"
+#: src/libslic3r/PrintConfig.cpp:2515
+msgid "Add a pad underneath the supported model"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2520
+msgid "Pad wall thickness"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:2522
 msgid "The thickness of the pad and its optional cavity walls."
-msgstr "The thickness of the pad and its optional cavity walls."
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2528
+#: src/libslic3r/PrintConfig.cpp:2530
 msgid "Pad wall height"
-msgstr "Pad wall height"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2529
-msgid "Defines the cavity depth. Set to zero to disable the cavity."
-msgstr "Defines the cavity depth. Set to zero to disable the cavity."
+#: src/libslic3r/PrintConfig.cpp:2531
+msgid ""
+"Defines the pad cavity depth. Set to zero to disable the cavity. Be careful "
+"when enabling this feature, as some resins may produce an extreme suction "
+"effect inside the cavity, which makes pealing the print off the vat foil "
+"difficult."
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2539
+#: src/libslic3r/PrintConfig.cpp:2544
 msgid "Max merge distance"
-msgstr "Max merge distance"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2541
+#: src/libslic3r/PrintConfig.cpp:2546
 msgid ""
 "Some objects can get along with a few smaller pads instead of a single big "
 "one. This parameter defines how far the center of two smaller pads should "
 "be. If theyare closer, they will get merged into one pad."
 msgstr ""
-"Some objects can get along with a few smaller pads instead of a single big "
-"one. This parameter defines how far the center of two smaller pads should "
-"be. If theyare closer, they will get merged into one pad."
 
-#: src/libslic3r/PrintConfig.cpp:2552
+#: src/libslic3r/PrintConfig.cpp:2557
 msgid "Pad edge radius"
-msgstr "Pad edge radius"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2561
+#: src/libslic3r/PrintConfig.cpp:2566
 msgid "Pad wall slope"
-msgstr "Pad wall slope"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2563
+#: src/libslic3r/PrintConfig.cpp:2568
 msgid ""
 "The slope of the pad wall relative to the bed plane. 90 degrees means "
 "straight walls."
 msgstr ""
-"The slope of the pad wall relative to the bed plane. 90 degrees means "
-"straight walls."
 
-#: src/libslic3r/PrintConfig.cpp:2924
+#: src/libslic3r/PrintConfig.cpp:2929
 msgid "Export SVG"
-msgstr "Export SVG"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2925
+#: src/libslic3r/PrintConfig.cpp:2930
 msgid "Export the model(s) as OBJ."
-msgstr "Export the model(s) as OBJ."
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2936
+#: src/libslic3r/PrintConfig.cpp:2941
 msgid "Export SLA"
-msgstr "Export SLA"
-
-#: src/libslic3r/PrintConfig.cpp:2937
-msgid "Slice the model and export SLA printing layers as PNG."
-msgstr "Slice the model and export SLA printing layers as PNG."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2942
-msgid "Export 3MF"
-msgstr "Export 3MF"
-
-#: src/libslic3r/PrintConfig.cpp:2943
-msgid "Export the model(s) as 3MF."
-msgstr "Export the model(s) as 3MF."
+msgid "Slice the model and export SLA printing layers as PNG."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2947
-msgid "Export AMF"
-msgstr "Export AMF"
+msgid "Export 3MF"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2948
-msgid "Export the model(s) as AMF."
-msgstr "Export the model(s) as AMF."
+msgid "Export the model(s) as 3MF."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2952
-msgid "Export STL"
-msgstr "Export STL"
+msgid "Export AMF"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2953
-msgid "Export the model(s) as STL."
-msgstr "Export the model(s) as STL."
+msgid "Export the model(s) as AMF."
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:2957
+msgid "Export STL"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2958
-msgid "Slice the model and export toolpaths as G-code."
-msgstr "Slice the model and export toolpaths as G-code."
+msgid "Export the model(s) as STL."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2963
-msgid "Slice"
-msgstr "Slice"
-
-#: src/libslic3r/PrintConfig.cpp:2964
-msgid ""
-"Slice the model as FFF or SLA based on the printer_technology configuration "
-"value."
+msgid "Slice the model and export toolpaths as G-code."
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:2968
+msgid "Slice"
 msgstr ""
-"Slice the model as FFF or SLA based on the printer_technology configuration "
-"value."
 
 #: src/libslic3r/PrintConfig.cpp:2969
-msgid "Help"
-msgstr "Help"
+msgid ""
+"Slice the model as FFF or SLA based on the printer_technology configuration "
+"value."
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:2970
-msgid "Show this help."
-msgstr "Show this help."
+#: src/libslic3r/PrintConfig.cpp:2974
+msgid "Help"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2975
-msgid "Help (FFF options)"
-msgstr "Help (FFF options)"
-
-#: src/libslic3r/PrintConfig.cpp:2976
-msgid "Show the full list of print/G-code configuration options."
-msgstr "Show the full list of print/G-code configuration options."
+msgid "Show this help."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2980
-msgid "Help (SLA options)"
-msgstr "Help (SLA options)"
+msgid "Help (FFF options)"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2981
-msgid "Show the full list of SLA print configuration options."
-msgstr "Show the full list of SLA print configuration options."
+msgid "Show the full list of print/G-code configuration options."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2985
-msgid "Output Model Info"
-msgstr "Output Model Info"
+msgid "Help (SLA options)"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2986
-msgid "Write information about the model to the console."
-msgstr "Write information about the model to the console."
+msgid "Show the full list of SLA print configuration options."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2990
-msgid "Save config file"
-msgstr "Save config file"
+msgid "Output Model Info"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:2991
+msgid "Write information about the model to the console."
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:2995
+msgid "Save config file"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:2996
 msgid "Save configuration to the specified file."
-msgstr "Save configuration to the specified file."
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:3001
+#: src/libslic3r/PrintConfig.cpp:3006
 msgid "Align XY"
-msgstr "Align XY"
-
-#: src/libslic3r/PrintConfig.cpp:3002
-msgid "Align the model to the given point."
-msgstr "Align the model to the given point."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:3007
+msgid "Align the model to the given point."
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3012
 msgid "Cut model at the given Z."
-msgstr "Cut model at the given Z."
-
-#: src/libslic3r/PrintConfig.cpp:3028
-msgid "Center"
-msgstr "Center"
-
-#: src/libslic3r/PrintConfig.cpp:3029
-msgid "Center the print around the given center."
-msgstr "Center the print around the given center."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:3033
-msgid "Don't arrange"
-msgstr "Don't arrange"
+msgid "Center"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:3034
-msgid ""
-"Do not rearrange the given models before merging and keep their original XY "
-"coordinates."
+msgid "Center the print around the given center."
 msgstr ""
-"Do not rearrange the given models before merging and keep their original XY "
-"coordinates."
-
-#: src/libslic3r/PrintConfig.cpp:3037
-msgid "Duplicate"
-msgstr "Duplicate"
 
 #: src/libslic3r/PrintConfig.cpp:3038
-msgid "Multiply copies by this factor."
-msgstr "Multiply copies by this factor."
+msgid "Don't arrange"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3039
+msgid ""
+"Do not rearrange the given models before merging and keep their original XY "
+"coordinates."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:3042
-msgid "Duplicate by grid"
-msgstr "Duplicate by grid"
+msgid "Duplicate"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:3043
-msgid "Multiply copies by creating a grid."
-msgstr "Multiply copies by creating a grid."
-
-#: src/libslic3r/PrintConfig.cpp:3046
-msgid "Merge"
-msgstr "Merge"
+msgid "Multiply copies by this factor."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:3047
-msgid ""
-"Arrange the supplied models in a plate and merge them in a single model in "
-"order to perform actions once."
+msgid "Duplicate by grid"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3048
+msgid "Multiply copies by creating a grid."
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3051
+msgid "Merge"
 msgstr ""
-"Arrange the supplied models in a plate and merge them in a single model in "
-"order to perform actions once."
 
 #: src/libslic3r/PrintConfig.cpp:3052
 msgid ""
+"Arrange the supplied models in a plate and merge them in a single model in "
+"order to perform actions once."
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3057
+msgid ""
 "Try to repair any non-manifold meshes (this option is implicitly added "
 "whenever we need to slice the model to perform the requested action)."
 msgstr ""
-"Try to repair any non-manifold meshes (this option is implicitly added "
-"whenever we need to slice the model to perform the requested action)."
-
-#: src/libslic3r/PrintConfig.cpp:3056
-msgid "Rotation angle around the Z axis in degrees."
-msgstr "Rotation angle around the Z axis in degrees."
-
-#: src/libslic3r/PrintConfig.cpp:3060
-msgid "Rotate around X"
-msgstr "Rotate around X"
 
 #: src/libslic3r/PrintConfig.cpp:3061
-msgid "Rotation angle around the X axis in degrees."
-msgstr "Rotation angle around the X axis in degrees."
+msgid "Rotation angle around the Z axis in degrees."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:3065
-msgid "Rotate around Y"
-msgstr "Rotate around Y"
+msgid "Rotate around X"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:3066
-msgid "Rotation angle around the Y axis in degrees."
-msgstr "Rotation angle around the Y axis in degrees."
+msgid "Rotation angle around the X axis in degrees."
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3070
+msgid "Rotate around Y"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:3071
-msgid "Scaling factor or percentage."
-msgstr "Scaling factor or percentage."
+msgid "Rotation angle around the Y axis in degrees."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:3076
+msgid "Scaling factor or percentage."
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3081
 msgid ""
 "Detect unconnected parts in the given model(s) and split them into separate "
 "objects."
 msgstr ""
-"Detect unconnected parts in the given model(s) and split them into separate "
-"objects."
 
-#: src/libslic3r/PrintConfig.cpp:3079
+#: src/libslic3r/PrintConfig.cpp:3084
 msgid "Scale to Fit"
-msgstr "Scale to Fit"
+msgstr ""
 
-#: src/libslic3r/PrintConfig.cpp:3080
+#: src/libslic3r/PrintConfig.cpp:3085
 msgid "Scale to fit the given volume."
-msgstr "Scale to fit the given volume."
-
-#: src/libslic3r/PrintConfig.cpp:3089
-msgid "Ignore non-existent config files"
-msgstr "Ignore non-existent config files"
-
-#: src/libslic3r/PrintConfig.cpp:3090
-msgid "Do not fail if a file supplied to --load does not exist."
-msgstr "Do not fail if a file supplied to --load does not exist."
-
-#: src/libslic3r/PrintConfig.cpp:3093
-msgid "Load config file"
-msgstr "Load config file"
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:3094
-msgid ""
-"Load configuration from the specified file. It can be used more than once to "
-"load options from multiple files."
+msgid "Ignore non-existent config files"
 msgstr ""
-"Load configuration from the specified file. It can be used more than once to "
-"load options from multiple files."
 
-#: src/libslic3r/PrintConfig.cpp:3097
-msgid "Output File"
-msgstr "Output File"
+#: src/libslic3r/PrintConfig.cpp:3095
+msgid "Do not fail if a file supplied to --load does not exist."
+msgstr ""
 
 #: src/libslic3r/PrintConfig.cpp:3098
+msgid "Load config file"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3099
+msgid ""
+"Load configuration from the specified file. It can be used more than once to "
+"load options from multiple files."
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3102
+msgid "Output File"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3103
 msgid ""
 "The file where the output will be written (if not specified, it will be "
 "based on the input file)."
 msgstr ""
-"The file where the output will be written (if not specified, it will be "
-"based on the input file)."
-
-#: src/libslic3r/PrintConfig.cpp:3108
-msgid "Data directory"
-msgstr "Data directory"
-
-#: src/libslic3r/PrintConfig.cpp:3109
-msgid ""
-"Load and store settings at the given directory. This is useful for "
-"maintaining different profiles or including configurations from a network "
-"storage."
-msgstr ""
-"Load and store settings at the given directory. This is useful for "
-"maintaining different profiles or including configurations from a network "
-"storage."
-
-#: src/libslic3r/PrintConfig.cpp:3112
-msgid "Logging level"
-msgstr "Logging level"
 
 #: src/libslic3r/PrintConfig.cpp:3113
+msgid "Data directory"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3114
+msgid ""
+"Load and store settings at the given directory. This is useful for "
+"maintaining different profiles or including configurations from a network "
+"storage."
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3117
+msgid "Logging level"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3118
 msgid ""
 "Messages with severity lower or eqal to the loglevel will be printed out. 0:"
 "trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal"
 msgstr ""
-"Messages with severity lower or eqal to the loglevel will be printed out. 0:"
-"trace, 1:debug, 2:info, 3:warning, 4:error, 5:fatal"
+
+#: src/libslic3r/PrintConfig.cpp:3123
+msgid "Render with a software renderer"
+msgstr ""
+
+#: src/libslic3r/PrintConfig.cpp:3124
+msgid ""
+"Render with a software renderer. The bundled MESA software renderer is "
+"loaded instead of the default OpenGL driver."
+msgstr ""
 
 #: src/libslic3r/GCode/PreviewData.cpp:176
 msgid "Mixed"
-msgstr "Mixed"
+msgstr ""
 
 #: src/libslic3r/GCode/PreviewData.cpp:396
 msgid "Height (mm)"
-msgstr "Height (mm)"
+msgstr "Hauteur (mm)"
 
 #: src/libslic3r/GCode/PreviewData.cpp:398
 msgid "Width (mm)"
-msgstr "Width (mm)"
+msgstr "Largeur (mm)"
 
 #: src/libslic3r/GCode/PreviewData.cpp:400
 msgid "Speed (mm/s)"
-msgstr "Speed (mm/s)"
+msgstr "Vitesse (mm/s)"
 
 #: src/libslic3r/GCode/PreviewData.cpp:402
 msgid "Volumetric flow rate (mm3/s)"
-msgstr "Volumetric flow rate (mm3/s)"
+msgstr "Débit volumétrique (mm3/s)"
 
 #: src/libslic3r/GCode/PreviewData.cpp:491
 msgid "Default print color"
-msgstr "Default print color"
+msgstr ""
 
 #: src/libslic3r/GCode/PreviewData.cpp:495
 #, c-format
 msgid "up to %.2f mm"
-msgstr "up to %.2f mm"
+msgstr ""
 
 #: src/libslic3r/GCode/PreviewData.cpp:499
 #, c-format
 msgid "above %.2f mm"
-msgstr "above %.2f mm"
+msgstr ""
 
 #: src/libslic3r/GCode/PreviewData.cpp:504
 #, c-format
 msgid "%.2f - %.2f mm"
-msgstr "%.2f - %.2f mm"
+msgstr ""
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0dc1facb2..f5099c8bb 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -12,7 +12,6 @@ add_subdirectory(poly2tri)
 add_subdirectory(qhull)
 add_subdirectory(Shiny)
 add_subdirectory(semver)
-add_subdirectory(imgui)
 
 # Adding libnest2d project for bin packing...
 set(LIBNEST2D_UNITTESTS ON CACHE BOOL "Force generating unittests for libnest2d")
@@ -24,6 +23,8 @@ include_directories(${LIBDIR}/qhull/src)
 add_subdirectory(libslic3r)
 
 if (SLIC3R_GUI)
+    add_subdirectory(imgui)
+
     if(WIN32)
         message(STATUS "WXWIN environment set to: $ENV{WXWIN}")
     elseif(UNIX)
diff --git a/src/libslic3r/GCode.cpp b/src/libslic3r/GCode.cpp
index c06d19cb9..bf1d24e8a 100644
--- a/src/libslic3r/GCode.cpp
+++ b/src/libslic3r/GCode.cpp
@@ -184,7 +184,7 @@ std::string WipeTowerIntegration::append_tcr(GCode &gcodegen, const WipeTower::T
     
 
     // Disable linear advance for the wipe tower operations.
-    gcode += "M900 K0\n";
+    gcode += (gcodegen.config().gcode_flavor == gcfRepRap ? std::string("M572 D0 S0\n") : std::string("M900 K0\n"));
     // Move over the wipe tower.
     // Retract for a tool change, using the toolchange retract value and setting the priming extra length.
     gcode += gcodegen.retract(true);
@@ -289,7 +289,7 @@ std::string WipeTowerIntegration::prime(GCode &gcodegen)
 
     if (&m_priming != nullptr && ! m_priming.extrusions.empty()) {
         // Disable linear advance for the wipe tower operations.
-        gcode += "M900 K0\n";
+        gcode += (gcodegen.config().gcode_flavor == gcfRepRap ? std::string("M572 D0 S0\n") : std::string("M900 K0\n"));
         // Let the tool change be executed by the wipe tower class.
         // Inform the G-code writer about the changes done behind its back.
         gcode += m_priming.gcode;
diff --git a/src/libslic3r/GCode/WipeTowerPrusaMM.cpp b/src/libslic3r/GCode/WipeTowerPrusaMM.cpp
index 829fe1bb9..34065a491 100644
--- a/src/libslic3r/GCode/WipeTowerPrusaMM.cpp
+++ b/src/libslic3r/GCode/WipeTowerPrusaMM.cpp
@@ -40,7 +40,7 @@ namespace PrusaMultiMaterial {
 class Writer
 {
 public:
-	Writer(float layer_height, float line_width) :
+	Writer(float layer_height, float line_width, GCodeFlavor flavor) :
 		m_current_pos(std::numeric_limits<float>::max(), std::numeric_limits<float>::max()),
 		m_current_z(0.f),
 		m_current_feedrate(0.f),
@@ -48,7 +48,8 @@ public:
 		m_extrusion_flow(0.f),
 		m_preview_suppressed(false),
 		m_elapsed_time(0.f),
-        m_default_analyzer_line_width(line_width)
+        m_default_analyzer_line_width(line_width),
+        m_gcode_flavor(flavor)
         {
             // adds tag for analyzer:
             char buf[64];
@@ -333,7 +334,10 @@ public:
 	Writer& set_extruder_trimpot(int current) 
 	{
 		char buf[128];
-		sprintf(buf, "M907 E%d\n", current);
+        if (m_gcode_flavor == gcfRepRap)
+            sprintf(buf, "M906 E%d\n", current);
+        else
+            sprintf(buf, "M907 E%d\n", current);
 		m_gcode += buf;
 		return *this;
 	};
@@ -407,6 +411,7 @@ private:
     int           current_temp = -1;
     const float   m_default_analyzer_line_width;
     float         m_used_filament_length = 0.f;
+    GCodeFlavor   m_gcode_flavor;
 
 	std::string   set_format_X(float x)
 	{
@@ -510,7 +515,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::prime(
 	const float prime_section_width = std::min(240.f / tools.size(), 60.f);
 	box_coordinates cleaning_box(xy(5.f, 0.01f + m_perimeter_width/2.f), prime_section_width, 100.f);
 
-	PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width);
+	PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor);
 	writer.set_extrusion_flow(m_extrusion_flow)
 		  .set_z(m_z_pos)
 		  .set_initial_tool(m_current_tool)
@@ -612,7 +617,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::tool_change(unsigned int tool, boo
 		(tool != (unsigned int)(-1) ? /*m_layer_info->depth*/wipe_area+m_depth_traversed-0.5*m_perimeter_width
                                     : m_wipe_tower_depth-m_perimeter_width));
 
-	PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width);
+	PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor);
 	writer.set_extrusion_flow(m_extrusion_flow)
 		.set_z(m_z_pos)
 		.set_initial_tool(m_current_tool)
@@ -631,7 +636,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::tool_change(unsigned int tool, boo
 
     // Increase the extruder driver current to allow fast ramming.
 	if (m_set_extruder_trimpot)
-		writer.set_extruder_trimpot(550);
+		writer.set_extruder_trimpot(750);
 
     // Ram the hot material out of the melt zone, retract the filament into the cooling tubes and let it cool.
     if (tool != (unsigned int)-1){ 			// This is not the last change.
@@ -693,7 +698,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::toolchange_Brim(bool sideOnly, flo
 		m_wipe_tower_width,
 		m_wipe_tower_depth);
 
-	PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width);
+	PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor);
 	writer.set_extrusion_flow(m_extrusion_flow * 1.1f)
 		  .set_z(m_z_pos) // Let the writer know the current Z position as a base for Z-hop.
 		  .set_initial_tool(m_current_tool)
@@ -1022,7 +1027,7 @@ WipeTower::ToolChangeResult WipeTowerPrusaMM::finish_layer()
 	// Otherwise the caller would likely travel to the wipe tower in vain.
 	assert(! this->layer_finished());
 
-	PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width);
+	PrusaMultiMaterial::Writer writer(m_layer_height, m_perimeter_width, m_gcode_flavor);
 	writer.set_extrusion_flow(m_extrusion_flow)
 		.set_z(m_z_pos)
 		.set_initial_tool(m_current_tool)
diff --git a/src/libslic3r/GCode/WipeTowerPrusaMM.hpp b/src/libslic3r/GCode/WipeTowerPrusaMM.hpp
index 2b5fa2241..90f50b57a 100644
--- a/src/libslic3r/GCode/WipeTowerPrusaMM.hpp
+++ b/src/libslic3r/GCode/WipeTowerPrusaMM.hpp
@@ -8,6 +8,7 @@
 #include <algorithm>
 
 #include "WipeTower.hpp"
+#include "PrintConfig.hpp"
 
 
 namespace Slic3r
@@ -46,7 +47,7 @@ public:
 	// wipe_area	-- space available for one toolchange in mm
 	WipeTowerPrusaMM(float x, float y, float width, float rotation_angle, float cooling_tube_retraction,
                      float cooling_tube_length, float parking_pos_retraction, float extra_loading_move, 
-                     float bridging, bool set_extruder_trimpot,
+                     float bridging, bool set_extruder_trimpot, GCodeFlavor flavor,
                      const std::vector<std::vector<float>>& wiping_matrix, unsigned int initial_tool) :
     m_wipe_tower_pos(x, y),
 		m_wipe_tower_width(width),
@@ -60,6 +61,7 @@ public:
         m_extra_loading_move(extra_loading_move),
 		m_bridging(bridging),
 		m_set_extruder_trimpot(set_extruder_trimpot),
+        m_gcode_flavor(flavor),
         m_current_tool(initial_tool),
         wipe_volumes(wiping_matrix)
         {}
@@ -223,6 +225,7 @@ private:
     bool            m_set_extruder_trimpot      = false;
     bool 			m_retain_speed_override		= true;
     bool            m_adhesion                  = true;
+    GCodeFlavor     m_gcode_flavor;
 
 	float m_perimeter_width = 0.4f * Width_To_Nozzle_Ratio; // Width of an extrusion line, also a perimeter spacing for 100% infill.
 	float m_extrusion_flow = 0.038f; //0.029f;// Extrusion flow is derived from m_perimeter_width, layer height and filament diameter.
diff --git a/src/libslic3r/Print.cpp b/src/libslic3r/Print.cpp
index 0637ba7f0..d743a9b23 100644
--- a/src/libslic3r/Print.cpp
+++ b/src/libslic3r/Print.cpp
@@ -126,7 +126,6 @@ bool Print::invalidate_state_by_config_options(const std::vector<t_config_option
         "first_layer_bed_temperature",
         "first_layer_speed",
         "gcode_comments",
-        "gcode_flavor",
         "gcode_label_objects",
         "infill_acceleration",
         "layer_gcode",
@@ -1777,7 +1776,7 @@ void Print::_make_wipe_tower()
         float(m_config.wipe_tower_rotation_angle.value), float(m_config.cooling_tube_retraction.value),
         float(m_config.cooling_tube_length.value), float(m_config.parking_pos_retraction.value),
         float(m_config.extra_loading_move.value), float(m_config.wipe_tower_bridging), 
-        m_config.high_current_on_filament_swap.value, wipe_volumes,
+        m_config.high_current_on_filament_swap.value, m_config.gcode_flavor, wipe_volumes,
         m_wipe_tower_data.tool_ordering.first_extruder());
 
     //wipe_tower.set_retract();
diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp
index ec5acf43b..a143051e0 100644
--- a/src/libslic3r/PrintConfig.cpp
+++ b/src/libslic3r/PrintConfig.cpp
@@ -131,7 +131,7 @@ void PrintConfigDef::init_fff_params()
                    "as [layer_num] and [layer_z].");
     def->multiline = true;
     def->full_width = true;
-    def->height = 50;
+    def->height = 5;
     def->mode = comExpert;
     def->default_value = new ConfigOptionString("");
 
@@ -140,7 +140,7 @@ void PrintConfigDef::init_fff_params()
     def->tooltip = L("This code is inserted between objects when using sequential printing. By default extruder and bed temperature are reset using non-wait command; however if M104, M109, M140 or M190 are detected in this custom code, Slic3r will not add temperature commands. Note that you can use placeholder variables for all Slic3r settings, so you can put a \"M109 S[first_layer_temperature]\" command wherever you want.");
     def->multiline = true;
     def->full_width = true;
-    def->height = 120;
+    def->height = 12;
     def->mode = comExpert;
     def->default_value = new ConfigOptionString("");
 
@@ -213,7 +213,7 @@ void PrintConfigDef::init_fff_params()
 
     def = this->add("clip_multipart_objects", coBool);
     def->label = L("Clip multi-part objects");
-    def->tooltip = L("When printing multi-material objects, this settings will make slic3r "
+    def->tooltip = L("When printing multi-material objects, this settings will make Slic3r "
                    "to clip the overlapping object parts one by the other "
                    "(2nd part will be clipped by the 1st, 3rd part will be clipped by the 1st and 2nd etc).");
     def->mode = comExpert;
@@ -360,7 +360,7 @@ void PrintConfigDef::init_fff_params()
                    "Note that you can use placeholder variables for all Slic3r settings.");
     def->multiline = true;
     def->full_width = true;
-    def->height = 120;
+    def->height = 12;
     def->mode = comExpert;
     def->default_value = new ConfigOptionString("M104 S0 ; turn off temperature\nG28 X0  ; home X axis\nM84     ; disable motors\n");
 
@@ -539,7 +539,7 @@ void PrintConfigDef::init_fff_params()
     def->tooltip = L("If layer print time is estimated below this number of seconds, fan will be enabled "
                    "and its speed will be calculated by interpolating the minimum and maximum speeds.");
     def->sidetext = L("approximate seconds");
-    def->width = 60;
+    def->width = 6;
     def->min = 0;
     def->max = 1000;
     def->mode = comExpert;
@@ -556,7 +556,7 @@ void PrintConfigDef::init_fff_params()
     def->tooltip = L("You can put your notes regarding the filament here.");
     def->multiline = true;
     def->full_width = true;
-    def->height = 130;
+    def->height = 13;
     def->mode = comAdvanced;
     def->default_value = new ConfigOptionStrings { "" };
 
@@ -1007,7 +1007,7 @@ void PrintConfigDef::init_fff_params()
     def->label = L("Inherits profile");
     def->tooltip = L("Name of the profile, from which this profile inherits.");
     def->full_width = true;
-    def->height = 50;
+    def->height = 5;
     def->default_value = new ConfigOptionString();
     def->cli = ConfigOptionDef::nocli;
 
@@ -1034,7 +1034,7 @@ void PrintConfigDef::init_fff_params()
     def->cli = "after-layer-gcode|layer-gcode";
     def->multiline = true;
     def->full_width = true;
-    def->height = 50;
+    def->height = 5;
     def->mode = comExpert;
     def->default_value = new ConfigOptionString("");
 
@@ -1053,7 +1053,7 @@ void PrintConfigDef::init_fff_params()
     def->mode = comExpert;
 	def->default_value = new ConfigOptionBool(true);
 
-	const int machine_limits_opt_width = 70;
+	const int machine_limits_opt_width = 7;
 	{
 		struct AxisDefault {
 			std::string         name;
@@ -1252,7 +1252,7 @@ void PrintConfigDef::init_fff_params()
                    "header comments.");
     def->multiline = true;
     def->full_width = true;
-    def->height = 130;
+    def->height = 13;
     def->mode = comAdvanced;
     def->default_value = new ConfigOptionString("");
 
@@ -1387,7 +1387,7 @@ void PrintConfigDef::init_fff_params()
     def->gui_flags = "serialized";
     def->multiline = true;
     def->full_width = true;
-	def->height = 60;
+	def->height = 6;
     def->mode = comExpert;
 	def->default_value = new ConfigOptionStrings();
 
@@ -1402,7 +1402,7 @@ void PrintConfigDef::init_fff_params()
     def->tooltip = L("You can put your notes regarding the printer here.");
     def->multiline = true;
     def->full_width = true;
-    def->height = 130;
+    def->height = 13;
     def->mode = comAdvanced;
     def->default_value = new ConfigOptionString("");
 
@@ -1589,7 +1589,7 @@ void PrintConfigDef::init_fff_params()
     def->label = "";
     def->full_label = L("Serial port");
     def->tooltip = L("USB/serial port for printer connection.");
-    def->width = 200;
+    def->width = 20;
     def->default_value = new ConfigOptionString("");
 
     def = this->add("serial_speed", coInt);
@@ -1635,7 +1635,7 @@ void PrintConfigDef::init_fff_params()
     def->tooltip = L("If layer print time is estimated below this number of seconds, print moves "
                    "speed will be scaled down to extend duration to this value.");
     def->sidetext = L("approximate seconds");
-    def->width = 60;
+    def->width = 6;
     def->min = 0;
     def->max = 1000;
     def->mode = comExpert;
@@ -1742,7 +1742,7 @@ void PrintConfigDef::init_fff_params()
                    "a \"M109 S[first_layer_temperature]\" command wherever you want.");
     def->multiline = true;
     def->full_width = true;
-    def->height = 120;
+    def->height = 12;
     def->mode = comExpert;
     def->default_value = new ConfigOptionString("G28 ; home all axes\nG1 Z5 F5000 ; lift nozzle\n");
 
@@ -1758,7 +1758,7 @@ void PrintConfigDef::init_fff_params()
                    "in extruder order.");
     def->multiline = true;
     def->full_width = true;
-    def->height = 120;
+    def->height = 12;
     def->mode = comExpert;
     def->default_value = new ConfigOptionStrings { "; Filament gcode\n" };
 
@@ -2008,7 +2008,7 @@ void PrintConfigDef::init_fff_params()
                    "as [previous_extruder] and [next_extruder].");
     def->multiline = true;
     def->full_width = true;
-    def->height = 50;
+    def->height = 5;
     def->mode = comExpert;
     def->default_value = new ConfigOptionString("");
 
@@ -2330,7 +2330,7 @@ void PrintConfigDef::init_sla_params()
     def->tooltip = L("You can put your notes regarding the SLA print material here.");
     def->multiline = true;
     def->full_width = true;
-    def->height = 130;
+    def->height = 13;
     def->mode = comAdvanced;
     def->default_value = new ConfigOptionString("");
 
diff --git a/src/libslic3r/Rasterizer/Rasterizer.cpp b/src/libslic3r/Rasterizer/Rasterizer.cpp
index 8eb721b43..6384a241f 100644
--- a/src/libslic3r/Rasterizer/Rasterizer.cpp
+++ b/src/libslic3r/Rasterizer/Rasterizer.cpp
@@ -248,20 +248,21 @@ RawBytes Raster::save(Raster::Compression comp)
 {
     assert(m_impl);
 
-    std::uint8_t *ptr = nullptr; size_t s = 0;
+    std::vector<std::uint8_t> data; size_t s = 0;
 
     switch(comp) {
     case Compression::PNG: {
-
         void *rawdata = tdefl_write_image_to_png_file_in_memory(
                     m_impl->buffer().data(),
                     int(resolution().width_px),
                     int(resolution().height_px), 1, &s);
 
         if(rawdata == nullptr) break;
-
-        ptr = static_cast<std::uint8_t*>(rawdata);
-
+        auto ptr = static_cast<std::uint8_t*>(rawdata);
+        
+        data.reserve(s); std::copy(ptr, ptr + s, std::back_inserter(data));
+        
+        MZ_FREE(rawdata);
         break;
     }
     case Compression::RAW: {
@@ -270,21 +271,19 @@ RawBytes Raster::save(Raster::Compression comp)
                 std::to_string(m_impl->resolution().height_px) + " " + "255 ";
 
         auto sz = m_impl->buffer().size()*sizeof(Impl::TBuffer::value_type);
-
         s = sz + header.size();
-        ptr = static_cast<std::uint8_t*>(MZ_MALLOC(s));
-
+        
+        data.reserve(s);
+        
         auto buff = reinterpret_cast<std::uint8_t*>(m_impl->buffer().data());
-        std::copy(buff, buff+sz, ptr + header.size());
+        std::copy(header.begin(), header.end(), std::back_inserter(data));
+        std::copy(buff, buff+sz, std::back_inserter(data));
+        
+        break;
     }
     }
 
-    return {ptr, s};
-}
-
-void RawBytes::MinzDeleter::operator()(uint8_t *rawptr)
-{
-    MZ_FREE(rawptr);
+    return {std::move(data)};
 }
 
 }
diff --git a/src/libslic3r/Rasterizer/Rasterizer.hpp b/src/libslic3r/Rasterizer/Rasterizer.hpp
index d4d2277c4..3fffe1a36 100644
--- a/src/libslic3r/Rasterizer/Rasterizer.hpp
+++ b/src/libslic3r/Rasterizer/Rasterizer.hpp
@@ -15,34 +15,25 @@ class ExPolygon;
 // Raw byte buffer paired with its size. Suitable for compressed PNG data.
 class RawBytes {
 
-    class MinzDeleter {
-    public:
-        void operator()(std::uint8_t *rawptr);
-    };
-
-    std::unique_ptr<std::uint8_t, MinzDeleter> m_buffer = nullptr;
-    size_t m_size = 0;
-
+    std::vector<std::uint8_t> m_buffer;
 public:
 
     RawBytes() = default;
-    RawBytes(std::uint8_t *rawptr, size_t s): m_buffer(rawptr), m_size(s) {}
-
-    size_t size() const { return m_size; }
-    const uint8_t * data() { return m_buffer.get(); }
+    RawBytes(std::vector<std::uint8_t>&& data): m_buffer(std::move(data)) {}
+    
+    size_t size() const { return m_buffer.size(); }
+    const uint8_t * data() { return m_buffer.data(); }
 
     // /////////////////////////////////////////////////////////////////////////
     // FIXME: the following is needed for MSVC2013 compatibility
     // /////////////////////////////////////////////////////////////////////////
 
     RawBytes(const RawBytes&) = delete;
-    RawBytes(RawBytes&& mv):
-        m_buffer(std::move(mv.m_buffer)), m_size(mv.m_size) {}
+    RawBytes(RawBytes&& mv) : m_buffer(std::move(mv.m_buffer)) {}
 
     RawBytes& operator=(const RawBytes&) = delete;
     RawBytes& operator=(RawBytes&& mv) {
-        m_buffer.swap(mv.m_buffer);
-        m_size = mv.m_size;
+        m_buffer = std::move(mv.m_buffer);
         return *this;
     }
 
diff --git a/src/libslic3r/SLA/SLASupportTree.cpp b/src/libslic3r/SLA/SLASupportTree.cpp
index 75f9b0140..1e139ebfb 100644
--- a/src/libslic3r/SLA/SLASupportTree.cpp
+++ b/src/libslic3r/SLA/SLASupportTree.cpp
@@ -846,6 +846,16 @@ public:
         if(!meshcache_valid) merged_mesh();
         return model_height;
     }
+    
+    // Intended to be called after the generation is fully complete
+    void clear_support_data() {
+        merged_mesh(); // in case the mesh is not generated, it should be...
+        m_heads.clear();
+        m_pillars.clear();
+        m_junctions.clear();
+        m_bridges.clear();
+        m_compact_bridges.clear();
+    }
 
 };
 
@@ -2285,6 +2295,7 @@ SLASupportTree::SLASupportTree(const std::vector<SupportPoint> &points,
 {
     m_impl->ground_level = emesh.ground_level() - cfg.object_elevation_mm;
     generate(points, emesh, cfg, ctl);
+    m_impl->clear_support_data();
 }
 
 SLASupportTree::SLASupportTree(const SLASupportTree &c):
diff --git a/src/libslic3r/SLAPrint.cpp b/src/libslic3r/SLAPrint.cpp
index 284073ca4..3122beece 100644
--- a/src/libslic3r/SLAPrint.cpp
+++ b/src/libslic3r/SLAPrint.cpp
@@ -436,6 +436,12 @@ SLAPrint::ApplyStatus SLAPrint::apply(const Model &model, const DynamicPrintConf
         if (new_objects)
             update_apply_status(false);
     }
+    
+    if(m_objects.empty()) {
+        m_printer.release();
+        m_printer_input.clear();
+        m_print_statistics.clear();
+    }
 
 #ifdef _DEBUG
     check_model_ids_equal(m_model, model);
@@ -668,8 +674,8 @@ void SLAPrint::process()
 
     // Slicing the model object. This method is oversimplified and needs to
     // be compared with the fff slicing algorithm for verification
-    auto slice_model = [this, ilhs, ilh](SLAPrintObject& po) {
-        TriangleMesh mesh = po.transformed_mesh();
+    auto slice_model = [this, ilhs, ilh, ilhd](SLAPrintObject& po) {
+        const TriangleMesh& mesh = po.transformed_mesh();
 
         // We need to prepare the slice index...
 
@@ -685,13 +691,15 @@ void SLAPrint::process()
         auto maxZs = coord_t(maxZ / SCALING_FACTOR);
 
         po.m_slice_index.clear();
-        po.m_slice_index.reserve(size_t(maxZs - (minZs + ilhs) / lhs) + 1);
-        po.m_slice_index.emplace_back(minZs + ilhs, float(minZ) + ilh / 2.f, ilh);
-
-        for(coord_t h = minZs + ilhs + lhs; h <= maxZs; h += lhs) {
-            po.m_slice_index.emplace_back(h, float(h*SCALING_FACTOR) - lh / 2.f, lh);
-        }
+        
+        size_t cap = size_t(1 + (maxZs - minZs - ilhs) / lhs);
+        po.m_slice_index.reserve(cap);
+        
+        po.m_slice_index.emplace_back(minZs + ilhs, minZ + ilhd / 2.0, ilh);
 
+        for(coord_t h = minZs + ilhs + lhs; h <= maxZs; h += lhs) 
+            po.m_slice_index.emplace_back(h, h*SCALING_FACTOR - lhd / 2.0, lh);
+       
         // Just get the first record that is form the model:
         auto slindex_it =
                 po.closest_slice_record(po.m_slice_index, float(bb3d.min(Z)));
@@ -704,11 +712,8 @@ void SLAPrint::process()
         po.m_model_height_levels.clear();
         po.m_model_height_levels.reserve(po.m_slice_index.size());
         for(auto it = slindex_it; it != po.m_slice_index.end(); ++it)
-        {
             po.m_model_height_levels.emplace_back(it->slice_level());
-        }
 
-        mesh.require_shared_vertices(); // TriangleMeshSlicer needs this
         TriangleMeshSlicer slicer(&mesh);
 
         po.m_model_slices.clear();
@@ -1534,7 +1539,7 @@ SLAPrintObject::SLAPrintObject(SLAPrint *print, ModelObject *model_object):
     Inherited(print, model_object),
     m_stepmask(slaposCount, true),
     m_transformed_rmesh( [this](TriangleMesh& obj){
-            obj = m_model_object->raw_mesh(); obj.transform(m_trafo);
+            obj = m_model_object->raw_mesh(); obj.transform(m_trafo); obj.require_shared_vertices();
         })
 {
 }
@@ -1823,7 +1828,7 @@ void SLAPrint::StatusReporter::operator()(
         SLAPrint &p, double st, const std::string &msg, unsigned flags)
 {
     m_st = st;
-    BOOST_LOG_TRIVIAL(info) << st << "% " << msg;
+    BOOST_LOG_TRIVIAL(info) << st << "% " << msg << log_memory_info();
     p.set_status(int(std::round(st)), msg, flags);
 }
 
diff --git a/src/slic3r/GUI/AboutDialog.cpp b/src/slic3r/GUI/AboutDialog.cpp
index 86b12a95f..b1a2556e7 100644
--- a/src/slic3r/GUI/AboutDialog.cpp
+++ b/src/slic3r/GUI/AboutDialog.cpp
@@ -32,8 +32,11 @@ void AboutDialogLogo::onRepaint(wxEvent &event)
 }
 
 AboutDialog::AboutDialog()
-    : wxDialog(NULL, wxID_ANY, wxString::Format(_(L("About %s")), SLIC3R_APP_NAME), wxDefaultPosition, wxDefaultSize, wxCAPTION)
+    : DPIDialog(NULL, wxID_ANY, wxString::Format(_(L("About %s")), SLIC3R_APP_NAME), wxDefaultPosition, 
+                wxDefaultSize, /*wxCAPTION*/wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
 {
+    SetFont(wxGetApp().normal_font());
+
 	wxColour bgr_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
 	SetBackgroundColour(bgr_clr);
     wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL);
@@ -42,8 +45,9 @@ AboutDialog::AboutDialog()
 	main_sizer->Add(hsizer, 0, wxEXPAND | wxALL, 20);
 
     // logo
-    auto *logo = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap(this, "Slic3r_192px.png", 192));
-	hsizer->Add(logo, 1, wxALIGN_CENTER_VERTICAL);
+    m_logo_bitmap = ScalableBitmap(this, "Slic3r_192px.png", 192);
+    m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bitmap.bmp());
+	hsizer->Add(m_logo, 1, wxALIGN_CENTER_VERTICAL);
     
     wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL); 	
     hsizer->Add(vsizer, 2, wxEXPAND|wxLEFT, 20);
@@ -51,8 +55,7 @@ AboutDialog::AboutDialog()
     // title
     {
         wxStaticText* title = new wxStaticText(this, wxID_ANY, SLIC3R_APP_NAME, wxDefaultPosition, wxDefaultSize);
-        wxFont title_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
-        title_font.SetWeight(wxFONTWEIGHT_BOLD);
+        wxFont title_font = GUI::wxGetApp().bold_font();
         title_font.SetFamily(wxFONTFAMILY_ROMAN);
         title_font.SetPointSize(24);
         title->SetFont(title_font);
@@ -63,9 +66,9 @@ AboutDialog::AboutDialog()
     {
         auto version_string = _(L("Version"))+ " " + std::string(SLIC3R_VERSION);
         wxStaticText* version = new wxStaticText(this, wxID_ANY, version_string.c_str(), wxDefaultPosition, wxDefaultSize);
-        wxFont version_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+        wxFont version_font = GetFont();
         #ifdef __WXMSW__
-            version_font.SetPointSize(9);
+        version_font.SetPointSize(version_font.GetPointSize()-1);
         #else
             version_font.SetPointSize(11);
         #endif
@@ -74,18 +77,18 @@ AboutDialog::AboutDialog()
     }
     
     // text
-    wxHtmlWindow* html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO/*NEVER*/);
+    m_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO/*NEVER*/);
     {
-        html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit()));
-        wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+        m_html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit()));
+        wxFont font = GetFont();
         const auto text_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
 		auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue());
 		auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue());
 
 		const int fs = font.GetPointSize()-1;
         int size[] = {fs,fs,fs,fs,fs,fs,fs};
-        html->SetFonts(font.GetFaceName(), font.GetFaceName(), size);
-        html->SetBorders(2);
+        m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size);
+        m_html->SetBorders(2);
 		const auto text = wxString::Format(
             "<html>"
             "<body bgcolor= %s link= %s>"
@@ -101,9 +104,9 @@ AboutDialog::AboutDialog()
             "</font>"
             "</body>"
             "</html>", bgr_clr_str, text_clr_str, text_clr_str);
-        html->SetPage(text);
-        vsizer->Add(html, 1, wxEXPAND | wxBOTTOM, 10);
-        html->Bind(wxEVT_HTML_LINK_CLICKED, &AboutDialog::onLinkClicked, this);
+        m_html->SetPage(text);
+        vsizer->Add(m_html, 1, wxEXPAND | wxBOTTOM, 10);
+        m_html->Bind(wxEVT_HTML_LINK_CLICKED, &AboutDialog::onLinkClicked, this);
     }
     
     wxStdDialogButtonSizer* buttons = this->CreateStdDialogButtonSizer(wxCLOSE);
@@ -118,6 +121,31 @@ AboutDialog::AboutDialog()
 	main_sizer->SetSizeHints(this);
 }
 
+void AboutDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+    m_logo_bitmap.msw_rescale();
+    m_logo->SetBitmap(m_logo_bitmap.bmp());
+
+    const wxFont& font = GetFont();
+    const int fs = font.GetPointSize() - 1;
+    int font_size[] = { fs, fs, fs, fs, fs, fs, fs };
+    m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), font_size);
+
+    const int& em = em_unit();
+
+    msw_buttons_rescale(this, em, { wxID_CLOSE });
+
+    m_html->SetMinSize(wxSize(-1, 16 * em));
+    m_html->Refresh();
+
+    const wxSize& size = wxSize(65 * em, 30 * em);
+
+    SetMinSize(size);
+    Fit();
+
+    Refresh();
+}
+
 void AboutDialog::onLinkClicked(wxHtmlLinkEvent &event)
 {
     wxLaunchDefaultBrowser(event.GetLinkInfo().GetHref());
diff --git a/src/slic3r/GUI/AboutDialog.hpp b/src/slic3r/GUI/AboutDialog.hpp
index 01f7564c5..7019b21f6 100644
--- a/src/slic3r/GUI/AboutDialog.hpp
+++ b/src/slic3r/GUI/AboutDialog.hpp
@@ -7,6 +7,9 @@
 #include <wx/intl.h>
 #include <wx/html/htmlwin.h>
 
+#include "GUI_Utils.hpp"
+#include "wxExtensions.hpp"
+
 namespace Slic3r { 
 namespace GUI {
 
@@ -20,10 +23,16 @@ private:
     void onRepaint(wxEvent &event);
 };
 
-class AboutDialog : public wxDialog
+class AboutDialog : public DPIDialog
 {
+    ScalableBitmap  m_logo_bitmap;
+    wxHtmlWindow*   m_html;
+    wxStaticBitmap* m_logo;
 public:
     AboutDialog();
+
+protected:
+    void on_dpi_changed(const wxRect &suggested_rect) override;
     
 private:
     void onLinkClicked(wxHtmlLinkEvent &event);
diff --git a/src/slic3r/GUI/BedShapeDialog.cpp b/src/slic3r/GUI/BedShapeDialog.cpp
index 7bbf1ac7f..00ebf117c 100644
--- a/src/slic3r/GUI/BedShapeDialog.cpp
+++ b/src/slic3r/GUI/BedShapeDialog.cpp
@@ -18,6 +18,7 @@ namespace GUI {
 
 void BedShapeDialog::build_dialog(ConfigOptionPoints* default_pt)
 {
+    SetFont(wxGetApp().normal_font());
 	m_panel = new BedShapePanel(this);
 	m_panel->build_panel(default_pt);
 
@@ -36,6 +37,22 @@ void BedShapeDialog::build_dialog(ConfigOptionPoints* default_pt)
 	}));
 }
 
+void BedShapeDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+    const int& em = em_unit();
+    m_panel->m_shape_options_book->SetMinSize(wxSize(25 * em, -1));
+
+    for (auto og : m_panel->m_optgroups)
+        og->msw_rescale();
+
+    const wxSize& size = wxSize(50 * em, -1);
+
+    SetMinSize(size);
+    SetSize(size);
+
+    Refresh();
+}
+
 void BedShapePanel::build_panel(ConfigOptionPoints* default_pt)
 {
 //  on_change(nullptr);
@@ -125,7 +142,7 @@ ConfigOptionsGroupShp BedShapePanel::init_shape_options_page(wxString title)
 	ConfigOptionsGroupShp optgroup;
 	optgroup = std::make_shared<ConfigOptionsGroup>(panel, _(L("Settings")));
 
-    optgroup->label_width = 10*wxGetApp().em_unit();//100;
+    optgroup->label_width = 10;
 	optgroup->m_on_change = [this](t_config_option_key opt_key, boost::any value) {
 		update_shape();
 	};
diff --git a/src/slic3r/GUI/BedShapeDialog.hpp b/src/slic3r/GUI/BedShapeDialog.hpp
index 538fccc34..72e50a05d 100644
--- a/src/slic3r/GUI/BedShapeDialog.hpp
+++ b/src/slic3r/GUI/BedShapeDialog.hpp
@@ -16,11 +16,8 @@ namespace GUI {
 using ConfigOptionsGroupShp = std::shared_ptr<ConfigOptionsGroup>;
 class BedShapePanel : public wxPanel
 {
-	wxChoicebook*	m_shape_options_book;
 	Bed_2D*			m_canvas;
 
-	std::vector <ConfigOptionsGroupShp>	m_optgroups;
-
 public:
 	BedShapePanel(wxWindow* parent) : wxPanel(parent, wxID_ANY) {}
 	~BedShapePanel() {}
@@ -35,18 +32,25 @@ public:
 	
 	// Returns the resulting bed shape polygon. This value will be stored to the ini file.
 	std::vector<Vec2d>	GetValue() { return m_canvas->m_bed_shape; }
+
+	wxChoicebook*	m_shape_options_book;
+	std::vector <ConfigOptionsGroupShp>	m_optgroups;
+
 };
 
-class BedShapeDialog : public wxDialog
+class BedShapeDialog : public DPIDialog
 {
 	BedShapePanel*	m_panel;
 public:
-	BedShapeDialog(wxWindow* parent) : wxDialog(parent, wxID_ANY, _(L("Bed Shape")),
+	BedShapeDialog(wxWindow* parent) : DPIDialog(parent, wxID_ANY, _(L("Bed Shape")),
         wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER) {}
 	~BedShapeDialog() {}
 
 	void		build_dialog(ConfigOptionPoints* default_pt);
 	std::vector<Vec2d>	GetValue() { return m_panel->GetValue(); }
+
+protected:
+    void on_dpi_changed(const wxRect &suggested_rect) override;
 };
 
 } // GUI
diff --git a/src/slic3r/GUI/BitmapCache.cpp b/src/slic3r/GUI/BitmapCache.cpp
index bb4145107..db116a5dd 100644
--- a/src/slic3r/GUI/BitmapCache.cpp
+++ b/src/slic3r/GUI/BitmapCache.cpp
@@ -23,6 +23,8 @@ void BitmapCache::clear()
 {
     for (std::pair<const std::string, wxBitmap*> &bitmap : m_map)
         delete bitmap.second;
+
+    m_map.clear();
 }
 
 static wxBitmap wxImage_to_wxBitmap_with_alpha(wxImage &&image, float scale = 1.0f)
@@ -259,9 +261,6 @@ wxBitmap* BitmapCache::load_svg(const std::string &bitmap_name, unsigned target_
 
 wxBitmap BitmapCache::mksolid(size_t width, size_t height, unsigned char r, unsigned char g, unsigned char b, unsigned char transparency)
 {
-    width = width * 0.1f * Slic3r::GUI::wxGetApp().em_unit() + 0.5f;
-    height = height * 0.1f * Slic3r::GUI::wxGetApp().em_unit() + 0.5f;
-
     wxImage image(width, height);
     image.InitAlpha();
     unsigned char* imgdata = image.GetData();
diff --git a/src/slic3r/GUI/ButtonsDescription.cpp b/src/slic3r/GUI/ButtonsDescription.cpp
index fb4c24286..9def34749 100644
--- a/src/slic3r/GUI/ButtonsDescription.cpp
+++ b/src/slic3r/GUI/ButtonsDescription.cpp
@@ -7,6 +7,7 @@
 #include "GUI.hpp"
 #include "GUI_App.hpp"
 #include "I18N.hpp"
+#include "wxExtensions.hpp"
 
 namespace Slic3r {
 namespace GUI {
@@ -23,7 +24,7 @@ ButtonsDescription::ButtonsDescription(wxWindow* parent, t_icon_descriptions* ic
 	// Icon description
 	for (auto pair : *m_icon_descriptions)
 	{
-		auto icon = new wxStaticBitmap(this, wxID_ANY, *pair.first);
+		auto icon = new wxStaticBitmap(this, wxID_ANY, /***/pair.first->bmp());
 		grid_sizer->Add(icon, -1, wxALIGN_CENTRE_VERTICAL);
 
 		std::istringstream f(pair.second);
diff --git a/src/slic3r/GUI/ButtonsDescription.hpp b/src/slic3r/GUI/ButtonsDescription.hpp
index 81baaf191..69005d2a5 100644
--- a/src/slic3r/GUI/ButtonsDescription.hpp
+++ b/src/slic3r/GUI/ButtonsDescription.hpp
@@ -4,10 +4,12 @@
 #include <wx/dialog.h>
 #include <vector>
 
+class ScalableBitmap;
+
 namespace Slic3r {
 namespace GUI {
 
-using t_icon_descriptions = std::vector<std::pair<wxBitmap*, std::string>>;
+using t_icon_descriptions = std::vector<std::pair<ScalableBitmap*, std::string>>;
 
 class ButtonsDescription : public wxDialog
 {
@@ -15,8 +17,6 @@ class ButtonsDescription : public wxDialog
 public:
 	ButtonsDescription(wxWindow* parent, t_icon_descriptions* icon_descriptions);
 	~ButtonsDescription() {}
-
-
 };
 
 } // GUI
diff --git a/src/slic3r/GUI/ConfigSnapshotDialog.cpp b/src/slic3r/GUI/ConfigSnapshotDialog.cpp
index 205e84f57..bdf80c27c 100644
--- a/src/slic3r/GUI/ConfigSnapshotDialog.cpp
+++ b/src/slic3r/GUI/ConfigSnapshotDialog.cpp
@@ -6,6 +6,7 @@
 
 #include "libslic3r/Utils.hpp"
 #include "GUI_App.hpp"
+#include "wxExtensions.hpp"
 
 namespace Slic3r { 
 namespace GUI {
@@ -66,7 +67,7 @@ static wxString generate_html_row(const Config::Snapshot &snapshot, bool row_eve
     }
 
     if (! compatible) {
-        text += "<p align=\"right\">" + _(L("Incompatible with this Slic3r")) + "</p>";
+        text += "<p align=\"right\">" + wxString::Format(_(L("Incompatible with this %s")), SLIC3R_APP_NAME) + "</p>";
     }
     else if (! snapshot_active)
         text += "<p align=\"right\"><a href=\"" + snapshot.id + "\">" + _(L("Activate")) + "</a></p>";
@@ -95,21 +96,26 @@ static wxString generate_html_page(const Config::SnapshotDB &snapshot_db, const
 }
 
 ConfigSnapshotDialog::ConfigSnapshotDialog(const Config::SnapshotDB &snapshot_db, const wxString &on_snapshot)
-    : wxDialog(NULL, wxID_ANY, _(L("Configuration Snapshots")), wxDefaultPosition, 
+    : DPIDialog(NULL, wxID_ANY, _(L("Configuration Snapshots")), wxDefaultPosition, 
                wxSize(45 * wxGetApp().em_unit(), 40 * wxGetApp().em_unit()), 
                wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxMAXIMIZE_BOX)
 {
+    this->SetFont(wxGetApp().normal_font());
     this->SetBackgroundColour(*wxWHITE);
     
     wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL);
     this->SetSizer(vsizer);
 
     // text
-    wxHtmlWindow* html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO);
+    html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO);
     {
-        wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+        wxFont font = wxGetApp().normal_font();//wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
         #ifdef __WXMSW__
-            int size[] = {8,8,8,8,11,11,11};
+            const int fs = font.GetPointSize();
+            const int fs1 = static_cast<int>(0.8f*fs);
+            const int fs2 = static_cast<int>(1.1f*fs);
+            int size[] = {fs1, fs1, fs1, fs1, fs2, fs2, fs2};
+//             int size[] = {8,8,8,8,11,11,11};
         #else
             int size[] = {11,11,11,11,14,14,14};
         #endif
@@ -127,6 +133,28 @@ ConfigSnapshotDialog::ConfigSnapshotDialog(const Config::SnapshotDB &snapshot_db
     vsizer->Add(buttons, 0, wxEXPAND | wxRIGHT | wxBOTTOM, 3);
 }
 
+void ConfigSnapshotDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+    wxFont font = GetFont();
+    const int fs = font.GetPointSize();
+    const int fs1 = static_cast<int>(0.8f*fs);
+    const int fs2 = static_cast<int>(1.1f*fs);
+    int font_size[] = { fs1, fs1, fs1, fs1, fs2, fs2, fs2 };
+
+    html->SetFonts(font.GetFaceName(), font.GetFaceName(), font_size);
+    html->Refresh();
+
+    const int& em = em_unit();
+
+    msw_buttons_rescale(this, em, { wxID_CLOSE});
+
+    const wxSize& size = wxSize(45 * em, 40 * em);
+    SetMinSize(size);
+    Fit();
+
+    Refresh();
+}
+
 void ConfigSnapshotDialog::onLinkClicked(wxHtmlLinkEvent &event)
 {
     m_snapshot_to_activate = event.GetLinkInfo().GetHref();
diff --git a/src/slic3r/GUI/ConfigSnapshotDialog.hpp b/src/slic3r/GUI/ConfigSnapshotDialog.hpp
index f43fb8ed1..9b8b69ecf 100644
--- a/src/slic3r/GUI/ConfigSnapshotDialog.hpp
+++ b/src/slic3r/GUI/ConfigSnapshotDialog.hpp
@@ -2,6 +2,7 @@
 #define slic3r_GUI_ConfigSnapshotDialog_hpp_
 
 #include "GUI.hpp"
+#include "GUI_Utils.hpp"
 
 #include <wx/wx.h>
 #include <wx/intl.h>
@@ -14,18 +15,23 @@ namespace Config {
 	class SnapshotDB;
 }
 
-class ConfigSnapshotDialog : public wxDialog
+class ConfigSnapshotDialog : public DPIDialog
 {
 public:
     ConfigSnapshotDialog(const Config::SnapshotDB &snapshot_db, const wxString &id);
     const std::string& snapshot_to_activate() const { return m_snapshot_to_activate; }
 
+protected:
+    void on_dpi_changed(const wxRect &suggested_rect) override;
+
 private:
     void onLinkClicked(wxHtmlLinkEvent &event);
     void onCloseDialog(wxEvent &);
 
     // If set, it contains a snapshot ID to be restored after the dialog closes.
     std::string m_snapshot_to_activate;
+
+    wxHtmlWindow* html;
 };
 
 } // namespace GUI
diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp
index 5da320830..93cf1c73f 100644
--- a/src/slic3r/GUI/ConfigWizard.cpp
+++ b/src/slic3r/GUI/ConfigWizard.cpp
@@ -18,6 +18,7 @@
 #include <wx/dataview.h>
 #include <wx/notebook.h>
 #include <wx/display.h>
+#include <wx/filefn.h>
 #include <wx/debug.h>
 
 #include "libslic3r/Utils.hpp"
@@ -81,11 +82,17 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt
     for (const auto &model : models) {
         if (! filter(model)) { continue; }
 
-        wxBitmap bitmap(GUI::from_u8(Slic3r::var((boost::format("printers/%1%_%2%.png") % vendor.id % model.id).str())), wxBITMAP_TYPE_PNG);
+        wxBitmap bitmap;
+        int bitmap_width = 0;
+        const wxString bitmap_file = GUI::from_u8(Slic3r::var((boost::format("printers/%1%_%2%.png") % vendor.id % model.id).str()));
+        if (wxFileExists(bitmap_file)) {
+            bitmap.LoadFile(bitmap_file, wxBITMAP_TYPE_PNG);
+            bitmap_width = bitmap.GetWidth();
+        }
 
         auto *title = new wxStaticText(this, wxID_ANY, model.name, wxDefaultPosition, wxDefaultSize, wxALIGN_LEFT);
         title->SetFont(font_name);
-        const int wrap_width = std::max((int)MODEL_MIN_WRAP, bitmap.GetWidth());
+        const int wrap_width = std::max((int)MODEL_MIN_WRAP, bitmap_width);
         title->Wrap(wrap_width);
 
         current_row_width += wrap_width;
@@ -187,6 +194,9 @@ PrinterPicker::PrinterPicker(wxWindow *parent, const VendorProfile &vendor, wxSt
         title_sizer->Add(sel_all_std, 0, wxRIGHT, BTN_SPACING);
         title_sizer->Add(sel_all, 0, wxRIGHT, BTN_SPACING);
         title_sizer->Add(sel_none);
+
+        // fill button indexes used later for buttons rescaling
+        m_button_indexes = { sel_all_std->GetId(), sel_all->GetId(), sel_none->GetId() };
     }
 
     sizer->Add(title_sizer, 0, wxEXPAND | wxBOTTOM, BTN_SPACING);
@@ -399,16 +409,20 @@ PageUpdate::PageUpdate(ConfigWizard *parent)
     auto *box_slic3r = new wxCheckBox(this, wxID_ANY, _(L("Check for application updates")));
     box_slic3r->SetValue(app_config->get("version_check") == "1");
     append(box_slic3r);
-    append_text(wxString::Format(_(L("If enabled, Slic3r checks for new versions of %s online. When a new version becomes available, "
-                                     "a notification is displayed at the next application startup (never during program usage). "
-                                     "This is only a notification mechanisms, no automatic installation is done.")), SLIC3R_APP_NAME));
+    append_text(wxString::Format(_(L(
+        "If enabled, %s checks for new application versions online. When a new version becomes available, "
+         "a notification is displayed at the next application startup (never during program usage). "
+         "This is only a notification mechanisms, no automatic installation is done.")), SLIC3R_APP_NAME));
 
     append_spacer(VERTICAL_SPACING);
 
     auto *box_presets = new wxCheckBox(this, wxID_ANY, _(L("Update built-in Presets automatically")));
     box_presets->SetValue(app_config->get("preset_update") == "1");
     append(box_presets);
-    append_text(_(L("If enabled, Slic3r downloads updates of built-in system presets in the background. These updates are downloaded into a separate temporary location. When a new preset version becomes available it is offered at application startup.")));
+    append_text(wxString::Format(_(L(
+        "If enabled, %s downloads updates of built-in system presets in the background."
+        "These updates are downloaded into a separate temporary location."
+        "When a new preset version becomes available it is offered at application startup.")), SLIC3R_APP_NAME));
     const auto text_bold = _(L("Updates are never applied without user's consent and never overwrite user's customized settings."));
     auto *label_bold = new wxStaticText(this, wxID_ANY, text_bold);
     label_bold->SetFont(boldfont);
@@ -635,19 +649,24 @@ void PageTemperatures::apply_custom_config(DynamicPrintConfig &config)
 
 ConfigWizardIndex::ConfigWizardIndex(wxWindow *parent)
     : wxPanel(parent)
-    // XXX: use create_scaled_bitmap:
+    /* #ys_FIXME_delete_after_testing by VK
     , bg(GUI::from_u8(Slic3r::var("Slic3r_192px_transparent.png")), wxBITMAP_TYPE_PNG)
     , bullet_black(GUI::from_u8(Slic3r::var("bullet_black.png")), wxBITMAP_TYPE_PNG)
     , bullet_blue(GUI::from_u8(Slic3r::var("bullet_blue.png")), wxBITMAP_TYPE_PNG)
     , bullet_white(GUI::from_u8(Slic3r::var("bullet_white.png")), wxBITMAP_TYPE_PNG)
+    */
+    , bg(ScalableBitmap(parent, "Slic3r_192px_transparent.png", 192))
+    , bullet_black(ScalableBitmap(parent, "bullet_black.png"))
+    , bullet_blue(ScalableBitmap(parent, "bullet_blue.png"))
+    , bullet_white(ScalableBitmap(parent, "bullet_white.png"))
     , item_active(0)
     , item_hover(-1)
     , last_page((size_t)-1)
 {
-    SetMinSize(bg.GetSize());
+    SetMinSize(bg.bmp().GetSize());
 
     const wxSize size = GetTextExtent("m");
-    em = size.x;
+    em_w = size.x;
     em_h = size.y;
 
     // Add logo bitmap.
@@ -656,7 +675,10 @@ ConfigWizardIndex::ConfigWizardIndex(wxWindow *parent)
     // In some cases it didn't work at all. And so wxStaticBitmap is used here instead,
     // because it has all the platform quirks figured out.
     auto *sizer = new wxBoxSizer(wxVERTICAL);
+    /* #ys_FIXME_delete_after_testing by VK
     auto *logo = new wxStaticBitmap(this, wxID_ANY, bg);
+    */
+    logo = new wxStaticBitmap(this, wxID_ANY, bg.bmp());
     sizer->AddStretchSpacer();
     sizer->Add(logo);
     SetSizer(sizer);
@@ -764,8 +786,12 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt)
 
     wxPaintDC dc(this);
 
+    /* #ys_FIXME_delete_after_testing by VK
     const auto bullet_w = bullet_black.GetSize().GetWidth();
     const auto bullet_h = bullet_black.GetSize().GetHeight();
+    */
+    const auto bullet_w = bullet_black.bmp().GetSize().GetWidth();
+    const auto bullet_h = bullet_black.bmp().GetSize().GetHeight();
     const int yoff_icon = bullet_h < em_h ? (em_h - bullet_h) / 2 : 0;
     const int yoff_text = bullet_h > em_h ? (bullet_h - em_h) / 2 : 0;
     const int yinc = item_height();
@@ -775,15 +801,21 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt)
     unsigned y = 0;
     for (size_t i = 0; i < items.size(); i++) {
         const Item& item = items[i];
-        unsigned x = em/2 + item.indent * em;
+        unsigned x = em_w/2 + item.indent * em_w;
 
         if (i == item_active || item_hover >= 0 && i == (size_t)item_hover) {
+            /*#ys_FIXME_delete_after_testing by VK
             dc.DrawBitmap(bullet_blue,  x, y + yoff_icon, false);
         }
         else if (i < item_active)  { dc.DrawBitmap(bullet_black, x, y + yoff_icon, false); }
         else if (i > item_active)  { dc.DrawBitmap(bullet_white, x, y + yoff_icon, false); }
+            */
+            dc.DrawBitmap(bullet_blue.bmp(), x, y + yoff_icon, false);
+        }
+        else if (i < item_active)  { dc.DrawBitmap(bullet_black.bmp(), x, y + yoff_icon, false); }
+        else if (i > item_active)  { dc.DrawBitmap(bullet_white.bmp(), x, y + yoff_icon, false); }
 
-        x += + bullet_w + em/2;
+        x += + bullet_w + em_w/2;
         const auto text_size = dc.GetTextExtent(item.label);
         dc.DrawText(item.label, x, y + yoff_text);
 
@@ -794,6 +826,7 @@ void ConfigWizardIndex::on_paint(wxPaintEvent & evt)
     if (GetMinSize().x < index_width) {
         CallAfter([this, index_width]() {
             SetMinSize(wxSize(index_width, GetMinSize().y));
+            Refresh();
         });
     }
 }
@@ -813,6 +846,18 @@ void ConfigWizardIndex::on_mouse_move(wxMouseEvent &evt)
     evt.Skip();
 }
 
+void ConfigWizardIndex::msw_rescale()
+{
+    bg.msw_rescale();
+    SetMinSize(bg.bmp().GetSize());
+    logo->SetBitmap(bg.bmp());
+
+    bullet_black.msw_rescale();
+    bullet_blue.msw_rescale();
+    bullet_white.msw_rescale();
+    Refresh();
+}
+
 
 // priv
 
@@ -987,9 +1032,10 @@ void ConfigWizard::priv::apply_config(AppConfig *app_config, PresetBundle *prese
 // Public
 
 ConfigWizard::ConfigWizard(wxWindow *parent, RunReason reason)
-    : wxDialog(parent, wxID_ANY, _(name().ToStdString()), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
+    : DPIDialog(parent, wxID_ANY, _(name().ToStdString()), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
     , p(new priv(this))
 {
+    this->SetFont(wxGetApp().normal_font());
     p->run_reason = reason;
 
     p->load_vendors();
@@ -1014,8 +1060,8 @@ ConfigWizard::ConfigWizard(wxWindow *parent, RunReason reason)
     topsizer->AddSpacer(INDEX_MARGIN);
     topsizer->Add(p->hscroll, 1, wxEXPAND);
 
-    auto *btn_sel_all = new wxButton(this, wxID_ANY, _(L("Select all standard printers")));
-    p->btnsizer->Add(btn_sel_all);
+    p->btn_sel_all = new wxButton(this, wxID_ANY, _(L("Select all standard printers")));
+    p->btnsizer->Add(p->btn_sel_all);
 
     p->btn_prev = new wxButton(this, wxID_ANY, _(L("< &Back")));
     p->btn_next = new wxButton(this, wxID_ANY, _(L("&Next >")));
@@ -1073,7 +1119,7 @@ ConfigWizard::ConfigWizard(wxWindow *parent, RunReason reason)
             9*disp_rect.width / 10,
             9*disp_rect.height / 10);
 
-        const int width_hint = p->index->GetSize().GetWidth() + p->page_fff->get_width() + 300;    // XXX: magic constant, I found no better solution
+        const int width_hint = p->index->GetSize().GetWidth() + p->page_fff->get_width() + 30 * p->em();    // XXX: magic constant, I found no better solution
         if (width_hint < window_rect.width) {
             window_rect.x += (window_rect.width - width_hint) / 2;
             window_rect.width = width_hint;
@@ -1087,7 +1133,7 @@ ConfigWizard::ConfigWizard(wxWindow *parent, RunReason reason)
     p->btn_finish->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &) { this->EndModal(wxID_OK); });
     p->btn_finish->Hide();
 
-    btn_sel_all->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &) {
+    p->btn_sel_all->Bind(wxEVT_BUTTON, [this](const wxCommandEvent &) {
         p->page_fff->select_all(true, false);
         p->page_msla->select_all(true, false);
         p->index->go_to(p->page_update);
@@ -1133,5 +1179,25 @@ const wxString& ConfigWizard::name(const bool from_menu/* = false*/)
     return from_menu ? config_wizard_name_menu : config_wizard_name;
 }
 
+void ConfigWizard::on_dpi_changed(const wxRect &suggested_rect)
+{
+    p->index->msw_rescale();
+
+    const int& em = em_unit();
+
+    msw_buttons_rescale(this, em, { wxID_APPLY, 
+                                    wxID_CANCEL,
+                                    p->btn_sel_all->GetId(),
+                                    p->btn_next->GetId(),
+                                    p->btn_prev->GetId() });
+
+    for (auto printer_picker: p->page_fff->printer_pickers)
+        msw_buttons_rescale(this, em, printer_picker->get_button_indexes());
+
+    // FIXME VK SetSize(???)
+
+    Refresh();
+}
+
 }
 }
diff --git a/src/slic3r/GUI/ConfigWizard.hpp b/src/slic3r/GUI/ConfigWizard.hpp
index c9ee05529..b707e525b 100644
--- a/src/slic3r/GUI/ConfigWizard.hpp
+++ b/src/slic3r/GUI/ConfigWizard.hpp
@@ -5,6 +5,8 @@
 
 #include <wx/dialog.h>
 
+#include "GUI_Utils.hpp"
+
 namespace Slic3r {
 
 class PresetBundle;
@@ -13,7 +15,7 @@ class PresetUpdater;
 namespace GUI {
 
 
-class ConfigWizard: public wxDialog
+class ConfigWizard: public DPIDialog
 {
 public:
     // Why is the Wizard run
@@ -35,6 +37,10 @@ public:
     bool run(PresetBundle *preset_bundle, const PresetUpdater *updater);
 
     static const wxString& name(const bool from_menu = false);
+
+protected:
+    void on_dpi_changed(const wxRect &suggested_rect) override ;
+
 private:
     struct priv;
     std::unique_ptr<priv> p;
diff --git a/src/slic3r/GUI/ConfigWizard_private.hpp b/src/slic3r/GUI/ConfigWizard_private.hpp
index df7602adf..95411e2aa 100644
--- a/src/slic3r/GUI/ConfigWizard_private.hpp
+++ b/src/slic3r/GUI/ConfigWizard_private.hpp
@@ -69,8 +69,11 @@ struct PrinterPicker: wxPanel
     void on_checkbox(const Checkbox *cbox, bool checked);
 
     int get_width() const { return width; }
+    const std::vector<int>& get_button_indexes() { return m_button_indexes; }
 private:
     int width;
+
+    std::vector<int> m_button_indexes;
 };
 
 struct ConfigWizardPage: wxPanel
@@ -210,7 +213,9 @@ public:
     void go_to(ConfigWizardPage *page);
 
     void clear();
+    void msw_rescale();
 
+    int em() const { return em_w; }
 private:
     struct Item
     {
@@ -221,20 +226,29 @@ private:
         bool operator==(ConfigWizardPage *page) const { return this->page == page; }
     };
 
-    int em;
+    int em_w;
     int em_h;
-
+    /* #ys_FIXME_delete_after_testing by VK 
     const wxBitmap bg;
     const wxBitmap bullet_black;
     const wxBitmap bullet_blue;
     const wxBitmap bullet_white;
+    */
+    ScalableBitmap bg;
+    ScalableBitmap bullet_black;
+    ScalableBitmap bullet_blue;
+    ScalableBitmap bullet_white;
+    wxStaticBitmap* logo;
 
     std::vector<Item> items;
     size_t item_active;
     ssize_t item_hover;
     size_t last_page;
 
-    int item_height() const { return std::max(bullet_black.GetSize().GetHeight(), em) + em; }
+    /* #ys_FIXME_delete_after_testing by VK 
+    int item_height() const { return std::max(bullet_black.GetSize().GetHeight(), em_w) + em_w; }
+    */
+    int item_height() const { return std::max(bullet_black.bmp().GetSize().GetHeight(), em_w) + em_w; }
 
     void on_paint(wxPaintEvent &evt);
     void on_mouse_move(wxMouseEvent &evt);
@@ -256,6 +270,7 @@ struct ConfigWizard::priv
     wxBoxSizer *btnsizer = nullptr;
     ConfigWizardPage *page_current = nullptr;
     ConfigWizardIndex *index = nullptr;
+    wxButton *btn_sel_all = nullptr;
     wxButton *btn_prev = nullptr;
     wxButton *btn_next = nullptr;
     wxButton *btn_finish = nullptr;
@@ -286,6 +301,8 @@ struct ConfigWizard::priv
     void on_custom_setup(bool custom_wanted);
 
     void apply_config(AppConfig *app_config, PresetBundle *preset_bundle, const PresetUpdater *updater);
+
+    int em() const { return index->em(); }
 };
 
 
diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp
index d8ed9f27a..cb414fa79 100644
--- a/src/slic3r/GUI/Field.cpp
+++ b/src/slic3r/GUI/Field.cpp
@@ -21,21 +21,11 @@ wxString double_to_string(double const value, const int max_precision /*= 4*/)
 void Field::PostInitialize()
 {
 	auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
-	m_Undo_btn			= new MyButton(m_parent, wxID_ANY, "", wxDefaultPosition,wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
-	m_Undo_to_sys_btn	= new MyButton(m_parent, wxID_ANY, "", wxDefaultPosition,wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
-	if (wxMSW) {
-		m_Undo_btn->SetBackgroundColour(color);
-		m_Undo_btn->SetBackgroundStyle(wxBG_STYLE_PAINT);
-		m_Undo_to_sys_btn->SetBackgroundColour(color);
-		m_Undo_to_sys_btn->SetBackgroundStyle(wxBG_STYLE_PAINT);
-	}
-	m_Undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_initial_value(); }));
-	m_Undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_sys_value(); }));
+	m_Undo_btn			= new RevertButton(m_parent, "bullet_white.png");
+	m_Undo_to_sys_btn	= new RevertButton(m_parent, "bullet_white.png");
 
-	//set default bitmap
-	wxBitmap bmp = create_scaled_bitmap(m_parent, "bullet_white.png");
-	set_undo_bitmap(&bmp);
-	set_undo_to_sys_bitmap(&bmp);
+    m_Undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_initial_value(); }));
+	m_Undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_back_to_sys_value(); }));
 
 	switch (m_opt.type)
 	{
@@ -53,6 +43,9 @@ void Field::PostInitialize()
 		break;
 	}
 
+    // initialize m_unit_value
+    m_em_unit = em_unit(m_parent);
+
 	BUILD();
 }
 
@@ -95,6 +88,7 @@ wxString Field::get_tooltip_text(const wxString& default_string)
 {
 	wxString tooltip_text("");
 	wxString tooltip = _(m_opt.tooltip);
+    edit_tooltip(tooltip);
 	if (tooltip.length() > 0)
         tooltip_text = tooltip + "\n" + _(L("default value")) + "\t: " +
         (boost::iends_with(m_opt_id, "_gcode") ? "\n" : "") + default_string +
@@ -200,8 +194,8 @@ bool is_defined_input_value(wxWindow* win, const ConfigOptionType& type)
 
 void TextCtrl::BUILD() {
     auto size = wxSize(wxDefaultSize);
-    if (m_opt.height >= 0) size.SetHeight(m_opt.height);
-    if (m_opt.width >= 0) size.SetWidth(m_opt.width);
+    if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+    if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
 
 	wxString text_value = wxString(""); 
 
@@ -345,6 +339,21 @@ boost::any& TextCtrl::get_value()
 	return m_value;
 }
 
+void TextCtrl::msw_rescale()
+{
+    Field::msw_rescale();
+    auto size = wxSize(wxDefaultSize);
+    if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+    if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
+
+    if (size != wxDefaultSize)
+    {
+        wxTextCtrl* field = dynamic_cast<wxTextCtrl*>(window);
+        field->SetMinSize(size);
+    }
+
+}
+
 void TextCtrl::enable() { dynamic_cast<wxTextCtrl*>(window)->Enable(); dynamic_cast<wxTextCtrl*>(window)->SetEditable(true); }
 void TextCtrl::disable() { dynamic_cast<wxTextCtrl*>(window)->Disable(); dynamic_cast<wxTextCtrl*>(window)->SetEditable(false); }
 
@@ -359,15 +368,16 @@ void TextCtrl::change_field_value(wxEvent& event)
 
 void CheckBox::BUILD() {
 	auto size = wxSize(wxDefaultSize);
-	if (m_opt.height >= 0) size.SetHeight(m_opt.height);
-	if (m_opt.width >= 0) size.SetWidth(m_opt.width);
+	if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+	if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
 
 	bool check_value =	m_opt.type == coBool ? 
 						m_opt.default_value->getBool() : m_opt.type == coBools ? 
 						static_cast<const ConfigOptionBools*>(m_opt.default_value)->get_at(m_opt_idx) : 
     					false;
 
-	auto temp = new wxCheckBox(m_parent, wxID_ANY, wxString(""), wxDefaultPosition, size); 
+	// Set Label as a string of at least one space simbol to correct system scaling of a CheckBox 
+	auto temp = new wxCheckBox(m_parent, wxID_ANY, wxString(" "), wxDefaultPosition, size); 
 	temp->SetFont(Slic3r::GUI::wxGetApp().normal_font());
 	temp->SetBackgroundStyle(wxBG_STYLE_PAINT);
 	temp->SetValue(check_value);
@@ -392,12 +402,20 @@ boost::any& CheckBox::get_value()
  	return m_value;
 }
 
+void CheckBox::msw_rescale()
+{
+    Field::msw_rescale();
+
+    wxCheckBox* field = dynamic_cast<wxCheckBox*>(window);
+    field->SetMinSize(wxSize(-1, int(1.5f*field->GetFont().GetPixelSize().y +0.5f)));
+}
+
 int undef_spin_val = -9999;		//! Probably, It's not necessary
 
 void SpinCtrl::BUILD() {
 	auto size = wxSize(wxDefaultSize);
-	if (m_opt.height >= 0) size.SetHeight(m_opt.height);
-	if (m_opt.width >= 0) size.SetWidth(m_opt.width);
+    if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+    if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
 
 	wxString	text_value = wxString("");
 	int			default_value = 0;
@@ -475,6 +493,11 @@ void SpinCtrl::BUILD() {
         else tmp_value = -9999;
 #ifdef __WXOSX__
         propagate_value();
+
+        // Forcibly set the input value for SpinControl, since the value 
+	    // inserted from the clipboard is not updated under OSX
+        if (tmp_value > -9999)
+            dynamic_cast<wxSpinCtrl*>(window)->SetValue(tmp_value);
 #endif
 	}), temp->GetId());
 	
@@ -492,10 +515,18 @@ void SpinCtrl::propagate_value()
         on_change_field();
 }
 
+void SpinCtrl::msw_rescale()
+{
+    Field::msw_rescale();
+
+    wxSpinCtrl* field = dynamic_cast<wxSpinCtrl*>(window);
+    field->SetMinSize(wxSize(-1, int(1.9f*field->GetFont().GetPixelSize().y)));
+}
+
 void Choice::BUILD() {
-    wxSize size(15 * wxGetApp().em_unit(), -1);
-	if (m_opt.height >= 0) size.SetHeight(m_opt.height);
-	if (m_opt.width >= 0) size.SetWidth(m_opt.width);
+    wxSize size(m_width * m_em_unit, -1);
+    if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+    if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
 
 	wxBitmapComboBox* temp;	
     if (!m_opt.gui_type.empty() && m_opt.gui_type.compare("select_open") != 0) {
@@ -804,11 +835,55 @@ boost::any& Choice::get_value()
 	return m_value;
 }
 
+void Choice::msw_rescale()
+{
+    Field::msw_rescale();
+
+    wxBitmapComboBox* field = dynamic_cast<wxBitmapComboBox*>(window);
+
+    const wxString selection = field->GetString(field->GetSelection());
+
+	/* To correct scaling (set new controll size) of a wxBitmapCombobox 
+	 * we need to refill control with new bitmaps. So, in our case : 
+	 * 1. clear conrol
+	 * 2. add content
+	 * 3. add scaled "empty" bitmap to the at least one item
+	 */
+    field->Clear();
+    wxSize size(wxDefaultSize);
+    size.SetWidth((m_opt.width > 0 ? m_opt.width : m_width) * m_em_unit);
+ 
+    // Set rescaled min height to correct layout
+    field->SetMinSize(wxSize(-1, int(1.5f*field->GetFont().GetPixelSize().y + 0.5f)));
+    // Set rescaled size
+    field->SetSize(size);
+
+    size_t idx, counter = idx = 0;
+    if (m_opt.enum_labels.empty() && m_opt.enum_values.empty()) {}
+    else{
+        for (auto el : m_opt.enum_labels.empty() ? m_opt.enum_values : m_opt.enum_labels) {
+            const wxString& str = _(el);
+            field->Append(str);
+            if (el.compare(selection) == 0)
+                idx = counter;
+            ++counter;
+        }
+    }
+
+    wxBitmap empty_bmp(1, field->GetFont().GetPixelSize().y + 2);
+    empty_bmp.SetWidth(0);
+    field->SetItemBitmap(0, empty_bmp);
+
+    idx == m_opt.enum_values.size() ?
+        field->SetValue(selection) :
+        field->SetSelection(idx);
+}
+
 void ColourPicker::BUILD()
 {
 	auto size = wxSize(wxDefaultSize);
-	if (m_opt.height >= 0) size.SetHeight(m_opt.height);
-	if (m_opt.width >= 0) size.SetWidth(m_opt.width);
+    if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+    if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
 
 	// Validate the color
 	wxString clr_str(static_cast<const ConfigOptionStrings*>(m_opt.default_value)->get_at(m_opt_idx));
@@ -843,7 +918,7 @@ void PointCtrl::BUILD()
 {
 	auto temp = new wxBoxSizer(wxHORIZONTAL);
 
-    const wxSize field_size(4 * wxGetApp().em_unit(), -1);
+    const wxSize field_size(4 * m_em_unit, -1);
 
 	auto default_pt = static_cast<const ConfigOptionPoints*>(m_opt.default_value)->values.at(0);
 	double val = default_pt(0);
@@ -886,6 +961,16 @@ void PointCtrl::BUILD()
 	y_textctrl->SetToolTip(get_tooltip_text(X+", "+Y));
 }
 
+void PointCtrl::msw_rescale()
+{
+    Field::msw_rescale();
+
+    const wxSize field_size(4 * m_em_unit, -1);
+
+    x_textctrl->SetMinSize(field_size);
+    y_textctrl->SetMinSize(field_size);
+}
+
 void PointCtrl::propagate_value(wxTextCtrl* win)
 {
     if (!win->GetValue().empty()) 
@@ -931,8 +1016,8 @@ boost::any& PointCtrl::get_value()
 void StaticText::BUILD()
 {
 	auto size = wxSize(wxDefaultSize);
-	if (m_opt.height >= 0) size.SetHeight(m_opt.height);
-	if (m_opt.width >= 0) size.SetWidth(m_opt.width);
+    if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+    if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
 
     const wxString legend(static_cast<const ConfigOptionString*>(m_opt.default_value)->value);
     auto temp = new wxStaticText(m_parent, wxID_ANY, legend, wxDefaultPosition, size, wxST_ELLIPSIZE_MIDDLE);
@@ -946,6 +1031,21 @@ void StaticText::BUILD()
 	temp->SetToolTip(get_tooltip_text(legend));
 }
 
+void StaticText::msw_rescale()
+{
+    Field::msw_rescale();
+
+    auto size = wxSize(wxDefaultSize);
+    if (m_opt.height >= 0) size.SetHeight(m_opt.height*m_em_unit);
+    if (m_opt.width >= 0) size.SetWidth(m_opt.width*m_em_unit);
+
+    if (size != wxDefaultSize)
+    {
+        wxStaticText* field = dynamic_cast<wxStaticText*>(window);
+        field->SetSize(size);
+    }
+}
+
 void SliderCtrl::BUILD()
 {
 	auto size = wxSize(wxDefaultSize);
diff --git a/src/slic3r/GUI/Field.hpp b/src/slic3r/GUI/Field.hpp
index 128d60d47..88ea39036 100644
--- a/src/slic3r/GUI/Field.hpp
+++ b/src/slic3r/GUI/Field.hpp
@@ -19,6 +19,7 @@
 #include "libslic3r/Utils.hpp"
 
 #include "GUI.hpp"
+#include "wxExtensions.hpp"
 
 #ifdef __WXMSW__
 #define wxMSW true
@@ -36,19 +37,24 @@ using t_back_to_init = std::function<void(const std::string&)>;
 
 wxString double_to_string(double const value, const int max_precision = 4);
 
-class MyButton : public wxButton
+class RevertButton : public ScalableButton
 {
     bool hidden = false; // never show button if it's hidden ones
 public:
-	MyButton() {}
-	MyButton(wxWindow* parent, wxWindowID id, const wxString& label = wxEmptyString,
-		const wxPoint& pos = wxDefaultPosition,
-		const wxSize& size = wxDefaultSize, long style = 0,
-		const wxValidator& validator = wxDefaultValidator,
-		const wxString& name = wxTextCtrlNameStr)
-	{
-		this->Create(parent, id, label, pos, size, style, validator, name);
-	}
+// 	RevertButton() {} 
+// 	RevertButton(wxWindow* parent, wxWindowID id, const wxString& label = wxEmptyString,
+// 		const wxPoint& pos = wxDefaultPosition,
+// 		const wxSize& size = wxDefaultSize, long style = 0,
+// 		const wxValidator& validator = wxDefaultValidator,
+// 		const wxString& name = wxTextCtrlNameStr)
+// 	{
+// 		this->Create(parent, id, label, pos, size, style, validator, name);
+// 	}
+    RevertButton(
+        wxWindow *parent,
+        const std::string& icon_name = ""
+        ) :
+        ScalableButton(parent, wxID_ANY, icon_name) {}
 
 	// overridden from wxWindow base class
 	virtual bool
@@ -154,19 +160,19 @@ public:
 		return std::move(p); //!p;
     }
 
-    bool 	set_undo_bitmap(const wxBitmap *bmp) {
+    bool 	set_undo_bitmap(const ScalableBitmap *bmp) {
     	if (m_undo_bitmap != bmp) {
     		m_undo_bitmap = bmp;
-    		m_Undo_btn->SetBitmap(*bmp);
+    		m_Undo_btn->SetBitmap_(*bmp);
     		return true;
     	}
     	return false;
     }
 
-    bool 	set_undo_to_sys_bitmap(const wxBitmap *bmp) {
+    bool 	set_undo_to_sys_bitmap(const ScalableBitmap *bmp) {
     	if (m_undo_to_sys_bitmap != bmp) {
     		m_undo_to_sys_bitmap = bmp;
-    		m_Undo_to_sys_btn->SetBitmap(*bmp);
+    		m_Undo_to_sys_btn->SetBitmap_(*bmp);
     		return true;
     	}
     	return false;
@@ -211,15 +217,23 @@ public:
 		m_side_text = side_text;
     }
 
+    virtual void msw_rescale() {
+        m_Undo_to_sys_btn->msw_rescale();
+        m_Undo_btn->msw_rescale();
+
+        // update em_unit value
+        m_em_unit = em_unit(m_parent);
+    }
+
 protected:
-	MyButton*			m_Undo_btn = nullptr;
+	RevertButton*			m_Undo_btn = nullptr;
 	// Bitmap and Tooltip text for m_Undo_btn. The wxButton will be updated only if the new wxBitmap pointer differs from the currently rendered one.
-	const wxBitmap*		m_undo_bitmap = nullptr;
-	const wxString*		m_undo_tooltip = nullptr;
-	MyButton*			m_Undo_to_sys_btn = nullptr;
+	const ScalableBitmap*   m_undo_bitmap = nullptr;
+	const wxString*         m_undo_tooltip = nullptr;
+	RevertButton*			m_Undo_to_sys_btn = nullptr;
 	// Bitmap and Tooltip text for m_Undo_to_sys_btn. The wxButton will be updated only if the new wxBitmap pointer differs from the currently rendered one.
-	const wxBitmap*		m_undo_to_sys_bitmap = nullptr;
-	const wxString*		m_undo_to_sys_tooltip = nullptr;
+    const ScalableBitmap*   m_undo_to_sys_bitmap = nullptr;
+	const wxString*		    m_undo_to_sys_tooltip = nullptr;
 
 	wxStaticText*		m_Label = nullptr;
 	// Color for Label. The wxColour will be updated only if the new wxColour pointer differs from the currently rendered one.
@@ -230,6 +244,8 @@ protected:
 	// current value
 	boost::any			m_value;
 
+    int                 m_em_unit;
+
     bool    bEnterPressed = false;
     
 	friend class OptionsGroup;
@@ -273,6 +289,8 @@ public:
     }
 
 	boost::any&		get_value() override;
+
+    void            msw_rescale() override;
     
     virtual void	enable();
     virtual void	disable();
@@ -301,6 +319,8 @@ public:
 	}
 	boost::any&		get_value() override;
 
+    void            msw_rescale() override;
+
 	void			enable() override { dynamic_cast<wxCheckBox*>(window)->Enable(); }
 	void			disable() override { dynamic_cast<wxCheckBox*>(window)->Disable(); }
 	wxWindow*		getWindow() override { return window; }
@@ -337,6 +357,8 @@ public:
 		return m_value = tmp_value;
 	}
 
+    void            msw_rescale() override;
+
 	void			enable() override { dynamic_cast<wxSpinCtrl*>(window)->Enable(); }
 	void			disable() override { dynamic_cast<wxSpinCtrl*>(window)->Disable(); }
 	wxWindow*		getWindow() override { return window; }
@@ -344,6 +366,7 @@ public:
 
 class Choice : public Field {
 	using Field::Field;
+    int             m_width{ 15 };
 public:
 	Choice(const ConfigOptionDef& opt, const t_config_option_key& id) : Field(opt, id) {}
 	Choice(wxWindow* parent, const ConfigOptionDef& opt, const t_config_option_key& id) : Field(parent, opt, id) {}
@@ -363,6 +386,8 @@ public:
 	void			set_values(const std::vector<std::string> &values);
 	boost::any&		get_value() override;
 
+    void            msw_rescale() override;
+
 	void			enable() override { dynamic_cast<wxBitmapComboBox*>(window)->Enable(); };
 	void			disable() override{ dynamic_cast<wxBitmapComboBox*>(window)->Disable(); };
 	wxWindow*		getWindow() override { return window; }
@@ -414,6 +439,8 @@ public:
 	void			set_value(const boost::any& value, bool change_event = false);
 	boost::any&		get_value() override;
 
+    void            msw_rescale() override;
+
 	void			enable() override {
 		x_textctrl->Enable();
 		y_textctrl->Enable(); }
@@ -446,6 +473,8 @@ public:
 
 	boost::any&		get_value()override { return m_value; }
 
+    void            msw_rescale() override;
+
 	void			enable() override { dynamic_cast<wxStaticText*>(window)->Enable(); };
 	void			disable() override{ dynamic_cast<wxStaticText*>(window)->Disable(); };
 	wxWindow*		getWindow() override { return window; }
diff --git a/src/slic3r/GUI/FirmwareDialog.cpp b/src/slic3r/GUI/FirmwareDialog.cpp
index 8095a3237..5de5626db 100644
--- a/src/slic3r/GUI/FirmwareDialog.cpp
+++ b/src/slic3r/GUI/FirmwareDialog.cpp
@@ -18,6 +18,7 @@
 #include "MsgDialog.hpp"
 #include "../Utils/HexFile.hpp"
 #include "../Utils/Serial.hpp"
+#include "wxExtensions.hpp"
 
 // wx includes need to come after asio because of the WinSock.h problem
 #include "FirmwareDialog.hpp"
@@ -118,6 +119,10 @@ struct FirmwareDialog::priv
 
 	wxTimer timer_pulse;
 
+    int min_width;
+    int min_height;
+    int min_height_expanded;
+
 	// Async modal dialog during flashing
 	std::mutex mutex;
 	int modal_response;
@@ -732,23 +737,21 @@ const char* FirmwareDialog::priv::avr109_dev_name(Avr109Pid usb_pid) {
 // Public
 
 FirmwareDialog::FirmwareDialog(wxWindow *parent) :
-	wxDialog(parent, wxID_ANY, _(L("Firmware flasher")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER),
+	GUI::DPIDialog(parent, wxID_ANY, _(L("Firmware flasher")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER),
 	p(new priv(this))
 {
-	enum {
-		DIALOG_MARGIN = 15,
-		SPACING = 10,
-		MIN_WIDTH = 50,
-		MIN_HEIGHT = 18,
-		MIN_HEIGHT_EXPANDED = 40,
-	};
-
 	const int em = GUI::wxGetApp().em_unit();
-	int min_width = MIN_WIDTH * em;
-	int min_height = MIN_HEIGHT * em;
-	int min_height_expanded = MIN_HEIGHT_EXPANDED * em;
+	p->min_width = MIN_WIDTH * em;
+	p->min_height = MIN_HEIGHT * em;
+	p->min_height_expanded = MIN_HEIGHT_EXPANDED * em;
 
-	wxFont status_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+    /* get current font from application, 
+     * because of wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) function
+     * returns font for primary Display
+     */
+    const wxFont& font = GUI::wxGetApp().normal_font();
+    SetFont(font);
+    wxFont status_font = font;//wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
 	status_font.MakeBold();
 	wxFont mono_font(wxFontInfo().Family(wxFONTFAMILY_TELETYPE));
 	mono_font.MakeSmaller();
@@ -819,10 +822,10 @@ FirmwareDialog::FirmwareDialog(wxWindow *parent) :
 
 	auto *topsizer = new wxBoxSizer(wxVERTICAL);
 	topsizer->Add(panel, 1, wxEXPAND | wxALL, DIALOG_MARGIN);
-	SetMinSize(wxSize(min_width, min_height));
+	SetMinSize(wxSize(p->min_width, p->min_height));
 	SetSizerAndFit(topsizer);
 	const auto size = GetSize();
-	SetSize(std::max(size.GetWidth(), static_cast<int>(min_width)), std::max(size.GetHeight(), static_cast<int>(min_height)));
+	SetSize(std::max(size.GetWidth(), static_cast<int>(p->min_width)), std::max(size.GetHeight(), static_cast<int>(p->min_height)));
 	Layout();
 
     SetEscapeId(wxID_CLOSE); // To close the dialog using "Esc" button
@@ -838,11 +841,11 @@ FirmwareDialog::FirmwareDialog(wxWindow *parent) :
 
 	p->spoiler->Bind(wxEVT_COLLAPSIBLEPANE_CHANGED, [=](wxCollapsiblePaneEvent &evt) {
 		if (evt.GetCollapsed()) {
-			this->SetMinSize(wxSize(min_width, min_height));
+			this->SetMinSize(wxSize(p->min_width, p->min_height));
 			const auto new_height = this->GetSize().GetHeight() - this->p->txt_stdout->GetSize().GetHeight();
 			this->SetSize(this->GetSize().GetWidth(), new_height);
 		} else {
-			this->SetMinSize(wxSize(min_width, min_height_expanded));
+			this->SetMinSize(wxSize(p->min_width, p->min_height_expanded));
 		}
 
 		this->Layout();
@@ -897,5 +900,25 @@ void FirmwareDialog::run(wxWindow *parent)
 	dialog.ShowModal();
 }
 
+void FirmwareDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+    const int& em = em_unit();
+
+    msw_buttons_rescale(this, em, { p->btn_close->GetId(), 
+                                    p->btn_rescan->GetId(),
+                                    p->btn_flash->GetId(),
+                                    p->hex_picker->GetPickerCtrl()->GetId()
+                                                            });
+
+    p->min_width = MIN_WIDTH * em;
+    p->min_height = MIN_HEIGHT * em;
+    p->min_height_expanded = MIN_HEIGHT_EXPANDED * em;
+
+    const int min_height = p->spoiler->IsExpanded() ? p->min_height_expanded : p->min_height;
+    SetMinSize(wxSize(p->min_width, min_height));
+    Fit();
+
+    Refresh();
+}
 
 }
diff --git a/src/slic3r/GUI/FirmwareDialog.hpp b/src/slic3r/GUI/FirmwareDialog.hpp
index ad048bf5d..7c688d379 100644
--- a/src/slic3r/GUI/FirmwareDialog.hpp
+++ b/src/slic3r/GUI/FirmwareDialog.hpp
@@ -4,13 +4,22 @@
 #include <memory>
 
 #include <wx/dialog.h>
+#include "GUI_Utils.hpp"
 
 
 namespace Slic3r {
 
 
-class FirmwareDialog: public wxDialog
+class FirmwareDialog: public GUI::DPIDialog
 {
+    enum {
+        DIALOG_MARGIN = 15,
+        SPACING = 10,
+        MIN_WIDTH = 50,
+        MIN_HEIGHT = /*18*/25,
+        MIN_HEIGHT_EXPANDED = 40,
+    };
+
 public:
 	FirmwareDialog(wxWindow *parent);
 	FirmwareDialog(FirmwareDialog &&) = delete;
@@ -20,6 +29,9 @@ public:
 	~FirmwareDialog();
 
 	static void run(wxWindow *parent);
+
+protected:
+    void on_dpi_changed(const wxRect &suggested_rect) override;
 private:
 	struct priv;
 	std::unique_ptr<priv> p;
diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp
index f8859807f..478cbf1aa 100644
--- a/src/slic3r/GUI/GLCanvas3D.cpp
+++ b/src/slic3r/GUI/GLCanvas3D.cpp
@@ -703,6 +703,7 @@ void GLCanvas3D::WarningTexture::activate(WarningTexture::Warning warning, bool
         m_warnings.erase(it);
         if (m_warnings.empty()) { // nothing remains to be shown
             reset();
+            m_msg_text = "";// save information for rescaling
             return;
         }
     }
@@ -723,6 +724,10 @@ void GLCanvas3D::WarningTexture::activate(WarningTexture::Warning warning, bool
     }
 
     _generate(text, canvas, red_colored); // GUI::GLTexture::reset() is called at the beginning of generate(...)
+
+    // save information for rescaling
+    m_msg_text = text;
+    m_is_colored_red = red_colored;
 }
 
 
@@ -789,9 +794,16 @@ bool GLCanvas3D::WarningTexture::_generate(const std::string& msg_utf8, const GL
     wxString msg = GUI::from_u8(msg_utf8);
 
     wxMemoryDC memDC;
+
+#ifdef __WXMSW__
+    // set scaled application normal font as default font 
+    wxFont font = wxGetApp().normal_font();
+#else
     // select default font
     const float scale = canvas.get_canvas_size().get_scale_factor();
     wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Scale(scale);
+#endif
+
     font.MakeLarger();
     font.MakeBold();
     memDC.SetFont(font);
@@ -892,6 +904,14 @@ void GLCanvas3D::WarningTexture::render(const GLCanvas3D& canvas) const
     }
 }
 
+void GLCanvas3D::WarningTexture::msw_rescale(const GLCanvas3D& canvas)
+{
+    if (m_msg_text.empty())
+        return;
+
+    _generate(m_msg_text, canvas, m_is_colored_red);
+}
+
 const unsigned char GLCanvas3D::LegendTexture::Squares_Border_Color[3] = { 64, 64, 64 };
 const unsigned char GLCanvas3D::LegendTexture::Default_Background_Color[3] = { (unsigned char)(DEFAULT_BG_LIGHT_COLOR[0] * 255.0f), (unsigned char)(DEFAULT_BG_LIGHT_COLOR[1] * 255.0f), (unsigned char)(DEFAULT_BG_LIGHT_COLOR[2] * 255.0f) };
 const unsigned char GLCanvas3D::LegendTexture::Error_Background_Color[3] = { (unsigned char)(ERROR_BG_LIGHT_COLOR[0] * 255.0f), (unsigned char)(ERROR_BG_LIGHT_COLOR[1] * 255.0f), (unsigned char)(ERROR_BG_LIGHT_COLOR[2] * 255.0f) };
@@ -961,13 +981,16 @@ bool GLCanvas3D::LegendTexture::generate(const GCodePreviewData& preview_data, c
     const int scaled_square_contour = Px_Square_Contour * scale;
     const int scaled_border = Px_Border * scale;
 
-    // select default font
-    wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Scale(scale_gl);
 #ifdef __WXMSW__
+    // set scaled application normal font as default font 
+    wxFont font = wxGetApp().normal_font();
+
     // Disabling ClearType works, but the font returned is very different (much thicker) from the default.
 //    msw_disable_cleartype(font);
     bool cleartype = is_font_cleartype(font);
 #else
+    // select default font
+    wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Scale(scale_gl);
     bool cleartype = false;
 #endif /* __WXMSW__ */
 
@@ -3190,6 +3213,11 @@ double GLCanvas3D::get_size_proportional_to_max_bed_size(double factor) const
     return factor * m_bed.get_bounding_box().max_size();
 }
 
+void GLCanvas3D::msw_rescale()
+{
+    m_warning_texture.msw_rescale(*this);
+}
+
 bool GLCanvas3D::_is_shown_on_screen() const
 {
     return (m_canvas != nullptr) ? m_canvas->IsShownOnScreen() : false;
@@ -3834,7 +3862,8 @@ void GLCanvas3D::_render_gizmos_overlay() const
 #if ENABLE_RETINA_GL
     m_gizmos.set_overlay_scale(m_retina_helper->get_scale_factor());
 #else
-    m_gizmos.set_overlay_scale(m_canvas->GetContentScaleFactor());
+//     m_gizmos.set_overlay_scale(m_canvas->GetContentScaleFactor());
+    m_gizmos.set_overlay_scale(wxGetApp().em_unit()*0.1f);//! #ys_FIXME_experiment
 #endif /* __WXMSW__ */
 
     m_gizmos.render_overlay(*this, m_selection);
@@ -3846,7 +3875,8 @@ void GLCanvas3D::_render_toolbar() const
 #if ENABLE_RETINA_GL
     m_toolbar.set_scale(m_retina_helper->get_scale_factor());
 #else
-    m_toolbar.set_scale(m_canvas->GetContentScaleFactor());
+//     m_toolbar.set_scale(m_canvas->GetContentScaleFactor());
+    m_toolbar.set_scale(wxGetApp().em_unit()*0.1f);//! #ys_FIXME_experiment
 #endif // ENABLE_RETINA_GL
 
     Size cnv_size = get_canvas_size();
@@ -3909,7 +3939,8 @@ void GLCanvas3D::_render_view_toolbar() const
 #if ENABLE_RETINA_GL
     m_view_toolbar.set_scale(m_retina_helper->get_scale_factor());
 #else
-    m_view_toolbar.set_scale(m_canvas->GetContentScaleFactor());
+//     m_view_toolbar.set_scale(m_canvas->GetContentScaleFactor());
+    m_view_toolbar.set_scale(wxGetApp().em_unit()*0.1f); //! #ys_FIXME_experiment
 #endif // ENABLE_RETINA_GL
 
     Size cnv_size = get_canvas_size();
diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp
index e81d46f11..8abc0378e 100644
--- a/src/slic3r/GUI/GLCanvas3D.hpp
+++ b/src/slic3r/GUI/GLCanvas3D.hpp
@@ -353,6 +353,9 @@ private:
         void activate(WarningTexture::Warning warning, bool state, const GLCanvas3D& canvas);
         void render(const GLCanvas3D& canvas) const;
 
+        // function used to get an information for rescaling of the warning
+        void msw_rescale(const GLCanvas3D& canvas);
+
     private:
         static const unsigned char Background_Color[3];
         static const unsigned char Opacity;
@@ -360,6 +363,10 @@ private:
         int m_original_width;
         int m_original_height;
 
+        // information for rescaling of the warning legend
+        std::string     m_msg_text = "";
+        bool            m_is_colored_red{false};
+
         // Information about which warnings are currently active.
         std::vector<Warning> m_warnings;
 
@@ -587,6 +594,8 @@ public:
 
     double get_size_proportional_to_max_bed_size(double factor) const;
 
+    void msw_rescale();
+
 private:
     bool _is_shown_on_screen() const;
 
diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp
index 62b8581be..0ffdd576f 100644
--- a/src/slic3r/GUI/GUI_App.cpp
+++ b/src/slic3r/GUI/GUI_App.cpp
@@ -325,6 +325,17 @@ void GUI_App::init_fonts()
 #endif /*__WXMAC__*/
 }
 
+void GUI_App::update_fonts()
+{
+    /* Only normal and bold fonts are used for an application rescale,
+     * because of under MSW small and normal fonts are the same.
+     * To avoid same rescaling twice, just fill this values
+     * from rescaled MainFrame
+     */
+    m_normal_font   = mainframe->normal_font();
+    m_bold_font     = mainframe->normal_font().Bold();
+}
+
 void GUI_App::set_label_clr_modified(const wxColour& clr) {
     m_color_label_modified = clr;
     auto clr_str = wxString::Format(wxT("#%02X%02X%02X"), clr.Red(), clr.Green(), clr.Blue());
@@ -652,7 +663,7 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
     Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Check(get_mode() == comAdvanced); }, config_id_base + ConfigMenuModeAdvanced);
     Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Check(get_mode() == comExpert); }, config_id_base + ConfigMenuModeExpert);
 
-    local_menu->AppendSubMenu(mode_menu, _(L("Mode")), _(L("Slic3r View Mode")));
+    local_menu->AppendSubMenu(mode_menu, _(L("Mode")), wxString::Format(_(L("%s View Mode")), SLIC3R_APP_NAME));
     local_menu->AppendSeparator();
     local_menu->Append(config_id_base + ConfigMenuLanguage, _(L("Change Application &Language")));
     local_menu->AppendSeparator();
@@ -669,6 +680,12 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
             // Take a configuration snapshot.
             if (check_unsaved_changes()) {
                 wxTextEntryDialog dlg(nullptr, _(L("Taking configuration snapshot")), _(L("Snapshot name")));
+                
+                // set current normal font for dialog children, 
+                // because of just dlg.SetFont(normal_font()) has no result;
+                for (auto child : dlg.GetChildren())
+                    child->SetFont(normal_font());
+
                 if (dlg.ShowModal() == wxID_OK)
                     app_config->set("on_snapshot",
                     Slic3r::GUI::Config::SnapshotDB::singleton().take_snapshot(
@@ -718,7 +735,6 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
             get_installed_languages(names, identifiers);
             if (select_language(names, identifiers)) {
                 save_language();
-//                 show_info(mainframe->m_tabpanel, _(L("Application will be restarted")), _(L("Attention!")));
                 _3DScene::remove_all_canvases();// remove all canvas before recreate GUI
                 recreate_GUI();
             }
diff --git a/src/slic3r/GUI/GUI_App.hpp b/src/slic3r/GUI/GUI_App.hpp
index 41805702b..d3c9e0afa 100644
--- a/src/slic3r/GUI/GUI_App.hpp
+++ b/src/slic3r/GUI/GUI_App.hpp
@@ -98,6 +98,7 @@ public:
     void            init_label_colours();
     void            update_label_colours_from_appconfig();
     void            init_fonts();
+    void            update_fonts();
     void            set_label_clr_modified(const wxColour& clr);
     void            set_label_clr_sys(const wxColour& clr);
 
@@ -139,6 +140,8 @@ public:
     bool            checked_tab(Tab* tab);
     void            load_current_presets();
 
+    wxString        current_language_code() { return m_wxLocale != nullptr ? m_wxLocale->GetCanonicalName() : wxString("en_US"); }
+
     virtual bool OnExceptionInMainLoop();
 
 #ifdef __APPLE__
diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp
index f65c83abb..dbe8145f3 100644
--- a/src/slic3r/GUI/GUI_ObjectList.cpp
+++ b/src/slic3r/GUI/GUI_ObjectList.cpp
@@ -163,7 +163,7 @@ void ObjectList::create_objects_ctrl()
     m_sizer = new wxBoxSizer(wxVERTICAL);
     m_sizer->Add(this, 1, wxGROW);
 
-    m_objects_model = new PrusaObjectDataViewModel;
+    m_objects_model = new ObjectDataViewModel;
     AssociateModel(m_objects_model);
     m_objects_model->SetAssociatedControl(this);
 #if wxUSE_DRAG_AND_DROP && wxUSE_UNICODE
@@ -173,7 +173,7 @@ void ObjectList::create_objects_ctrl()
 
     // column 0(Icon+Text) of the view control: 
     // And Icon can be consisting of several bitmaps
-    AppendColumn(new wxDataViewColumn(_(L("Name")), new PrusaBitmapTextRenderer(),
+    AppendColumn(new wxDataViewColumn(_(L("Name")), new BitmapTextRenderer(),
         0, 20*wxGetApp().em_unit()/*200*/, wxALIGN_LEFT, wxDATAVIEW_COL_RESIZABLE));
 
     // column 1 of the view control:
@@ -203,7 +203,7 @@ void ObjectList::set_tooltip_for_item(const wxPoint& pt)
     if (col->GetTitle() == " " && GetSelectedItemsCount()<2)
         GetMainWindow()->SetToolTip(_(L("Right button click the icon to change the object settings")));
     else if (col->GetTitle() == _("Name") &&
-        m_objects_model->GetBitmap(item).GetRefData() == m_bmp_manifold_warning.GetRefData()) {
+        m_objects_model->GetBitmap(item).GetRefData() == m_bmp_manifold_warning.bmp().GetRefData()) {
         int obj_idx = m_objects_model->GetIdByItem(item);
         auto& stats = (*m_objects)[obj_idx]->volumes[0]->mesh.stl.stats;
         int errors = stats.degenerate_facets + stats.edges_fixed + stats.facets_removed +
@@ -395,27 +395,71 @@ void ObjectList::update_name_in_model(const wxDataViewItem& item) const
 
 void ObjectList::init_icons()
 {
-    m_bmp_modifiermesh     = create_scaled_bitmap(nullptr, "add_modifier");
-    m_bmp_solidmesh        = create_scaled_bitmap(nullptr, "add_part");
-    m_bmp_support_enforcer = create_scaled_bitmap(nullptr, "support_enforcer");
-    m_bmp_support_blocker  = create_scaled_bitmap(nullptr, "support_blocker");
-
+    m_bmp_modifiermesh      = ScalableBitmap(nullptr, "add_modifier");    // Add part 
+    m_bmp_solidmesh         = ScalableBitmap(nullptr, "add_part");        // Add modifier 
+    m_bmp_support_enforcer  = ScalableBitmap(nullptr, "support_enforcer");// Add support enforcer 
+    m_bmp_support_blocker   = ScalableBitmap(nullptr, "support_blocker"); // Add support blocker  
 
     m_bmp_vector.reserve(4); // bitmaps for different types of parts 
-    m_bmp_vector.push_back(&m_bmp_solidmesh);         // Add part
-    m_bmp_vector.push_back(&m_bmp_modifiermesh);      // Add modifier
-    m_bmp_vector.push_back(&m_bmp_support_enforcer);  // Add support enforcer
-    m_bmp_vector.push_back(&m_bmp_support_blocker);   // Add support blocker
+    m_bmp_vector.push_back(&m_bmp_solidmesh.bmp());         
+    m_bmp_vector.push_back(&m_bmp_modifiermesh.bmp());      
+    m_bmp_vector.push_back(&m_bmp_support_enforcer.bmp());  
+    m_bmp_vector.push_back(&m_bmp_support_blocker.bmp());   
+
+
+    // Set volumes default bitmaps for the model
     m_objects_model->SetVolumeBitmaps(m_bmp_vector);
 
     // init icon for manifold warning
-    m_bmp_manifold_warning  = create_scaled_bitmap(nullptr, "exclamation");
+    m_bmp_manifold_warning  = ScalableBitmap(nullptr, "exclamation");
 
     // init bitmap for "Split to sub-objects" context menu
-    m_bmp_split             = create_scaled_bitmap(nullptr, "split_parts_SMALL");
+    m_bmp_split             = ScalableBitmap(nullptr, "split_parts_SMALL");
 
     // init bitmap for "Add Settings" context menu
-    m_bmp_cog               = create_scaled_bitmap(nullptr, "cog");
+    m_bmp_cog               = ScalableBitmap(nullptr, "cog");
+}
+
+void ObjectList::rescale_icons()
+{
+    m_bmp_vector.clear();
+    m_bmp_vector.reserve(4); // bitmaps for different types of parts 
+    for (ScalableBitmap* bitmap : std::vector<ScalableBitmap*> {
+                                    &m_bmp_modifiermesh,         // Add part
+                                    &m_bmp_solidmesh,             // Add modifier
+                                    &m_bmp_support_enforcer,     // Add support enforcer
+                                    &m_bmp_support_blocker })    // Add support blocker                                                           
+    {
+        bitmap->msw_rescale();
+        m_bmp_vector.push_back(& bitmap->bmp());
+    }
+    // Set volumes default bitmaps for the model
+    m_objects_model->SetVolumeBitmaps(m_bmp_vector);
+
+    m_bmp_manifold_warning.msw_rescale();
+    m_bmp_split.msw_rescale();
+    m_bmp_cog.msw_rescale();
+
+
+    // Update CATEGORY_ICON according to new scale
+    {
+        // Note: `this` isn't passed to create_scaled_bitmap() here because of bugs in the widget,
+        // see note in PresetBundle::load_compatible_bitmaps()
+
+        // ptFFF
+        CATEGORY_ICON[L("Layers and Perimeters")]    = create_scaled_bitmap(nullptr, "layers");
+        CATEGORY_ICON[L("Infill")]                   = create_scaled_bitmap(nullptr, "infill");
+        CATEGORY_ICON[L("Support material")]         = create_scaled_bitmap(nullptr, "support");
+        CATEGORY_ICON[L("Speed")]                    = create_scaled_bitmap(nullptr, "time");
+        CATEGORY_ICON[L("Extruders")]                = create_scaled_bitmap(nullptr, "funnel");
+        CATEGORY_ICON[L("Extrusion Width")]          = create_scaled_bitmap(nullptr, "funnel");
+//         CATEGORY_ICON[L("Skirt and brim")]          = create_scaled_bitmap(nullptr, "skirt+brim"); 
+//         CATEGORY_ICON[L("Speed > Acceleration")]    = create_scaled_bitmap(nullptr, "time");
+        CATEGORY_ICON[L("Advanced")]                 = create_scaled_bitmap(nullptr, "wrench");
+        // ptSLA
+        CATEGORY_ICON[L("Supports")]                 = create_scaled_bitmap(nullptr, "support"/*"sla_supports"*/);
+        CATEGORY_ICON[L("Pad")]                      = create_scaled_bitmap(nullptr, "pad");
+    }
 }
 
 
@@ -463,8 +507,7 @@ void ObjectList::paste_volumes_into_list(int obj_idx, const ModelVolumePtrs& vol
         items.Add(vol_item);
     }
 
-    m_parts_changed = true;
-    parts_changed(obj_idx);
+    changed_object(obj_idx);
 
     if (items.size() > 1)
     {
@@ -490,9 +533,7 @@ void ObjectList::paste_objects_into_list(const std::vector<size_t>& object_idxs)
         items.Add(m_objects_model->GetItemById(object));
     }
 
-    m_parts_changed = true;
     wxGetApp().plater()->changed_objects(object_idxs);
-    m_parts_changed = false;
 
     select_items(items);
 #ifndef __WXOSX__ //#ifdef __WXMSW__ // #ys_FIXME
@@ -534,7 +575,7 @@ void ObjectList::OnContextMenu(wxDataViewEvent&)
     if (title == " ")
         show_context_menu();
     else if (title == _("Name") && pt.x >15 &&
-             m_objects_model->GetBitmap(item).GetRefData() == m_bmp_manifold_warning.GetRefData())
+             m_objects_model->GetBitmap(item).GetRefData() == m_bmp_manifold_warning.bmp().GetRefData())
     {
         if (is_windows10())
             fix_through_netfabb();
@@ -703,8 +744,7 @@ void ObjectList::OnDrop(wxDataViewEvent &event)
     select_item(m_objects_model->ReorganizeChildren(from_volume_id, to_volume_id,
                                                     m_objects_model->GetParent(item)));
 
-    m_parts_changed = true;
-    parts_changed(m_dragged_data.obj_idx());
+    changed_object(m_dragged_data.obj_idx());
 
     m_dragged_data.clear();
 }
@@ -1000,12 +1040,12 @@ void ObjectList::append_menu_items_add_volume(wxMenu* menu)
 wxMenuItem* ObjectList::append_menu_item_split(wxMenu* menu) 
 {
     return append_menu_item(menu, wxID_ANY, _(L("Split to parts")), "",
-        [this](wxCommandEvent&) { split(); }, m_bmp_split, menu);
+        [this](wxCommandEvent&) { split(); }, m_bmp_split.bmp(), menu);
 }
 
 wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_) 
 {
-    PrusaMenu* menu = dynamic_cast<PrusaMenu*>(menu_);
+    MenuWithSeparators* menu = dynamic_cast<MenuWithSeparators*>(menu_);
 
     const wxString menu_name = _(L("Add settings"));
     // Delete old items from settings popupmenu
@@ -1053,7 +1093,7 @@ wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_)
 
     if (printer_technology() == ptFFF ||
         menu->GetMenuItems().size() > 0 && !menu->GetMenuItems().back()->IsSeparator())
-        menu->m_separator_frst = menu->AppendSeparator();
+        menu->SetFirstSeparator();
 
     // Add frequently settings
     create_freq_settings_popupmenu(menu);
@@ -1061,11 +1101,11 @@ wxMenuItem* ObjectList::append_menu_item_settings(wxMenu* menu_)
     if (mode == comAdvanced)
         return nullptr;
 
-    menu->m_separator_scnd = menu->AppendSeparator();
+    menu->SetSecondSeparator();
 
     // Add full settings list
     auto  menu_item = new wxMenuItem(menu, wxID_ANY, menu_name);
-    menu_item->SetBitmap(m_bmp_cog);
+    menu_item->SetBitmap(m_bmp_cog.bmp());
 
     menu_item->SetSubMenu(create_settings_popupmenu(menu));
 
@@ -1290,7 +1330,7 @@ void ObjectList::load_subobject(ModelVolumeType type)
     wxArrayString part_names;
     load_part((*m_objects)[obj_idx], part_names, type);
 
-    parts_changed(obj_idx);
+    changed_object(obj_idx);
 
     for (int i = 0; i < part_names.size(); ++i) {
         const wxDataViewItem sel_item = m_objects_model->AddVolumeChild(item, part_names.Item(i), type);
@@ -1306,7 +1346,6 @@ void ObjectList::load_part( ModelObject* model_object,
 {
     wxWindow* parent = wxGetApp().tab_panel()->GetPage(0);
 
-    m_parts_changed = false;
     wxArrayString input_files;
     wxGetApp().import_model(parent, input_files);
     for (int i = 0; i < input_files.size(); ++i) {
@@ -1342,8 +1381,6 @@ void ObjectList::load_part( ModelObject* model_object,
 
                 // set a default extruder value, since user can't add it manually
                 new_volume->config.set_key_value("extruder", new ConfigOptionInt(0));
-
-                m_parts_changed = true;
             }
         }
     }
@@ -1486,8 +1523,7 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const Mode
     // set a default extruder value, since user can't add it manually
     new_volume->config.set_key_value("extruder", new ConfigOptionInt(0));
 
-    m_parts_changed = true;
-    parts_changed(obj_idx);
+    changed_object(obj_idx);
 
     const auto object_item = m_objects_model->GetTopParent(GetSelection());
     select_item(m_objects_model->AddVolumeChild(object_item, name, type));
@@ -1551,8 +1587,7 @@ void ObjectList::del_instances_from_object(const int obj_idx)
 
     (*m_objects)[obj_idx]->invalidate_bounding_box(); // ? #ys_FIXME
 
-    m_parts_changed = true;
-    parts_changed(obj_idx);
+    changed_object(obj_idx);
 }
 
 bool ObjectList::del_subobject_from_object(const int obj_idx, const int idx, const int type)
@@ -1597,8 +1632,7 @@ bool ObjectList::del_subobject_from_object(const int obj_idx, const int idx, con
     else
         return false;
 
-    m_parts_changed = true;
-    parts_changed(obj_idx);
+    changed_object(obj_idx);
 
     return true;
 }
@@ -1648,8 +1682,7 @@ void ObjectList::split()
     if (parent == item)
         Expand(parent);
 
-    m_parts_changed = true;
-    parts_changed(obj_idx);
+    changed_object(obj_idx);
 }
 
 bool ObjectList::get_volume_by_item(const wxDataViewItem& item, ModelVolume*& volume)
@@ -1706,17 +1739,10 @@ bool ObjectList::can_split_instances()
     return selection.is_multiple_full_instance() || selection.is_single_full_instance();
 }
 
-void ObjectList::part_settings_changed()
+// NO_PARAMETERS function call means that changed object index will be determine from Selection() 
+void ObjectList::changed_object(const int obj_idx/* = -1*/) const 
 {
-    m_part_settings_changed = true;
-    wxGetApp().plater()->changed_object(get_selected_obj_idx());
-    m_part_settings_changed = false;
-}
-
-void ObjectList::parts_changed(int obj_idx)
-{
-    wxGetApp().plater()->changed_object(obj_idx);
-    m_parts_changed = false;
+    wxGetApp().plater()->changed_object(obj_idx < 0 ? get_selected_obj_idx() : obj_idx);
 }
 
 void ObjectList::part_selection_changed()
@@ -1819,7 +1845,7 @@ void ObjectList::add_object_to_list(size_t obj_idx)
         stats.facets_added + stats.facets_reversed + stats.backwards_edges;
     if (errors > 0) {
         wxVariant variant;
-        variant << PrusaDataViewBitmapText(item_name, m_bmp_manifold_warning);
+        variant << DataViewBitmapText(item_name, m_bmp_manifold_warning.bmp());
         m_objects_model->SetValue(variant, item, 0);
     }
 
@@ -2439,8 +2465,7 @@ void ObjectList::change_part_type()
     volume->set_type(new_type);
     m_objects_model->SetVolumeType(item, new_type);
 
-    m_parts_changed = true;
-    parts_changed(get_selected_obj_idx());
+    changed_object(get_selected_obj_idx());
 
     // Update settings showing, if we have it
     //(we show additional settings for Part and Modifier and hide it for Support Blocker/Enforcer)
@@ -2620,7 +2645,7 @@ void ObjectList::rename_item()
     wxVariant valueOld;
     m_objects_model->GetValue(valueOld, item, 0);
 
-    PrusaDataViewBitmapText bmpText;
+    DataViewBitmapText bmpText;
     bmpText << valueOld;
 
     // But replace the text with the value entered by user.
@@ -2668,11 +2693,29 @@ void ObjectList::update_item_error_icon(const int obj_idx, const int vol_idx) co
     if (errors == 0) {
         // delete Error_icon if all errors are fixed
         wxVariant variant;
-        variant << PrusaDataViewBitmapText(from_u8(model_object->name), wxNullBitmap);
+        variant << DataViewBitmapText(from_u8(model_object->name), wxNullBitmap);
         m_objects_model->SetValue(variant, item, 0);
     }
 }
 
+void ObjectList::msw_rescale()
+{
+    // update min size !!! A width of control shouldn't be a wxDefaultCoord
+    SetMinSize(wxSize(1, 15 * wxGetApp().em_unit()));
+
+    GetColumn(0)->SetWidth(19 * wxGetApp().em_unit());
+    GetColumn(1)->SetWidth(8 * wxGetApp().em_unit());
+    GetColumn(2)->SetWidth(int(2 * wxGetApp().em_unit()));
+
+    // rescale all icons, used by ObjectList
+    rescale_icons();
+
+    // rescale/update existingitems with bitmaps
+    m_objects_model->Rescale();
+
+    Layout();
+}
+
 void ObjectList::ItemValueChanged(wxDataViewEvent &event)
 {
     if (event.GetColumn() == 0)
@@ -2686,7 +2729,7 @@ void ObjectList::OnEditingDone(wxDataViewEvent &event)
     if (event.GetColumn() != 0)
         return;
 
-    const auto renderer = dynamic_cast<PrusaBitmapTextRenderer*>(GetColumn(0)->GetRenderer());
+    const auto renderer = dynamic_cast<BitmapTextRenderer*>(GetColumn(0)->GetRenderer());
 
     if (renderer->WasCanceled())
         show_error(this, _(L("The supplied name is not valid;")) + "\n" +
diff --git a/src/slic3r/GUI/GUI_ObjectList.hpp b/src/slic3r/GUI/GUI_ObjectList.hpp
index a0343100a..da082d1d4 100644
--- a/src/slic3r/GUI/GUI_ObjectList.hpp
+++ b/src/slic3r/GUI/GUI_ObjectList.hpp
@@ -13,8 +13,8 @@
 
 class wxBoxSizer;
 class wxMenuItem;
-class PrusaObjectDataViewModel;
-class PrusaMenu;
+class ObjectDataViewModel;
+class MenuWithSeparators;
 
 namespace Slic3r {
 class ConfigOptionsGroup;
@@ -108,18 +108,18 @@ class ObjectList : public wxDataViewCtrl
     wxBoxSizer          *m_sizer {nullptr};
     wxWindow            *m_parent {nullptr};
 
-    wxBitmap	m_bmp_modifiermesh;
-    wxBitmap	m_bmp_solidmesh;
-    wxBitmap	m_bmp_support_enforcer;
-    wxBitmap	m_bmp_support_blocker;
-    wxBitmap	m_bmp_manifold_warning;
-    wxBitmap	m_bmp_cog;
-    wxBitmap	m_bmp_split;
+    ScalableBitmap	    m_bmp_modifiermesh;
+    ScalableBitmap	    m_bmp_solidmesh;
+    ScalableBitmap	    m_bmp_support_enforcer;
+    ScalableBitmap	    m_bmp_support_blocker;
+    ScalableBitmap	    m_bmp_manifold_warning;
+    ScalableBitmap	    m_bmp_cog;
+    ScalableBitmap	    m_bmp_split;
 
-    PrusaMenu   m_menu_object;
-    PrusaMenu   m_menu_part;
-    PrusaMenu   m_menu_sla_object;
-    PrusaMenu   m_menu_instance;
+    MenuWithSeparators  m_menu_object;
+    MenuWithSeparators  m_menu_part;
+    MenuWithSeparators  m_menu_sla_object;
+    MenuWithSeparators  m_menu_instance;
     wxMenuItem* m_menu_item_split { nullptr };
     wxMenuItem* m_menu_item_split_part { nullptr };
     wxMenuItem* m_menu_item_settings { nullptr };
@@ -139,9 +139,6 @@ class ObjectList : public wxDataViewCtrl
                                                            // update_settings_items - updating canvas selection is undesirable,
                                                            // because it would turn off the gizmos (mainly a problem for the SLA gizmo)
 
-    bool        m_parts_changed = false;
-    bool        m_part_settings_changed = false;
-
     int         m_selected_row = 0;
     wxDataViewItem m_last_selected_item {nullptr};
 
@@ -157,7 +154,7 @@ public:
 
     std::map<std::string, wxBitmap> CATEGORY_ICON;
 
-    PrusaObjectDataViewModel	*m_objects_model{ nullptr };
+    ObjectDataViewModel	*m_objects_model{ nullptr };
     DynamicPrintConfig          *m_config {nullptr};
 
     std::vector<ModelObject*>   *m_objects{ nullptr };
@@ -176,6 +173,7 @@ public:
     void                update_extruder_values_for_items(const int max_extruder);
 
     void                init_icons();
+    void                rescale_icons();
 
     void                set_tooltip_for_item(const wxPoint& pt);
 
@@ -225,11 +223,8 @@ public:
     wxBoxSizer*         get_sizer() {return  m_sizer;}
     int                 get_selected_obj_idx() const;
     DynamicPrintConfig& get_item_config(const wxDataViewItem& item) const;
-    bool                is_parts_changed() const { return m_parts_changed; }
-    bool                is_part_settings_changed() const { return m_part_settings_changed; }
-    void                part_settings_changed();
 
-    void                parts_changed(int obj_idx);
+    void                changed_object(const int obj_idx = -1) const;
     void                part_selection_changed();
 
     // Add object to the list
@@ -291,6 +286,8 @@ public:
     void paste_volumes_into_list(int obj_idx, const ModelVolumePtrs& volumes);
     void paste_objects_into_list(const std::vector<size_t>& object_idxs);
 
+    void msw_rescale();
+
 private:
     void OnChar(wxKeyEvent& event);
     void OnContextMenu(wxDataViewEvent &event);
diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.cpp b/src/slic3r/GUI/GUI_ObjectManipulation.cpp
index 761f29e98..d15779308 100644
--- a/src/slic3r/GUI/GUI_ObjectManipulation.cpp
+++ b/src/slic3r/GUI/GUI_ObjectManipulation.cpp
@@ -67,7 +67,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) :
 #endif // __APPLE__
 {
     m_og->set_name(_(L("Object Manipulation")));
-    m_og->label_width = 12 * wxGetApp().em_unit();//125;
+    m_og->label_width = 12;//125;
     m_og->set_grid_vgap(5);
     
     m_og->m_on_change = std::bind(&ObjectManipulation::on_change, this, std::placeholders::_1, std::placeholders::_2);
@@ -89,11 +89,11 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) :
     def.label = L("Name");
     def.gui_type = "legend";
     def.tooltip = L("Object name");
-    def.width = 21 * wxGetApp().em_unit();
+    def.width = 21;
     def.default_value = new ConfigOptionString{ " " };
     m_og->append_single_option_line(Option(def, "object_name"));
 
-    const int field_width = 5 * wxGetApp().em_unit()/*50*/;
+    const int field_width = 5;
 
     // Legend for object modification
     auto line = Line{ "", "" };
@@ -126,7 +126,7 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) :
         // Add "uniform scaling" button in front of "Scale" option 
         if (option_name == "Scale") {
             line.near_label_widget = [this](wxWindow* parent) {
-                auto btn = new PrusaLockButton(parent, wxID_ANY);
+                auto btn = new LockButton(parent, wxID_ANY);
                 btn->Bind(wxEVT_BUTTON, [btn, this](wxCommandEvent &event){
                     event.Skip();
                     wxTheApp->CallAfter([btn, this]() { set_uniform_scaling(btn->IsLocked()); });
@@ -164,15 +164,13 @@ ObjectManipulation::ObjectManipulation(wxWindow* parent) :
     m_og->append_line(add_og_to_object_settings(L("Scale"), "%"), &m_scale_Label);
     m_og->append_line(add_og_to_object_settings(L("Size"), "mm"));
 
-    /* Unused parameter at this time
-    def.label = L("Place on bed");
-    def.type = coBool;
-    def.tooltip = L("Automatic placing of models on printing bed in Y axis");
-    def.gui_type = "";
-    def.sidetext = "";
-    def.default_value = new ConfigOptionBool{ false };
-    m_og->append_single_option_line(Option(def, "place_on_bed"));
-    */
+    // call back for a rescale of button "Set uniform scale"
+    m_og->rescale_near_label_widget = [this](wxWindow* win) {
+        auto *ctrl = dynamic_cast<LockButton*>(win);
+        if (ctrl == nullptr)
+            return;
+        ctrl->msw_rescale();
+    };
 }
 
 void ObjectManipulation::Show(const bool show)
diff --git a/src/slic3r/GUI/GUI_ObjectManipulation.hpp b/src/slic3r/GUI/GUI_ObjectManipulation.hpp
index 5db9622ce..b92654742 100644
--- a/src/slic3r/GUI/GUI_ObjectManipulation.hpp
+++ b/src/slic3r/GUI/GUI_ObjectManipulation.hpp
@@ -7,7 +7,7 @@
 #include "GLCanvas3D.hpp"
 
 class wxStaticText;
-class PrusaLockButton;
+class LockButton;
 
 namespace Slic3r {
 namespace GUI {
@@ -82,7 +82,7 @@ class ObjectManipulation : public OG_Settings
     bool            m_uniform_scale {true};
     // Does the object manipulation panel work in World or Local coordinates?
     bool            m_world_coordinates = true;
-    PrusaLockButton* m_lock_bnt{ nullptr };
+    LockButton*     m_lock_bnt{ nullptr };
     wxBitmapComboBox* m_word_local_combo = nullptr;
 
 #ifndef __APPLE__
diff --git a/src/slic3r/GUI/GUI_ObjectSettings.cpp b/src/slic3r/GUI/GUI_ObjectSettings.cpp
index 72eeb76de..b7ba2d4fc 100644
--- a/src/slic3r/GUI/GUI_ObjectSettings.cpp
+++ b/src/slic3r/GUI/GUI_ObjectSettings.cpp
@@ -59,6 +59,8 @@ ObjectSettings::ObjectSettings(wxWindow* parent) :
 
     m_settings_list_sizer = new wxBoxSizer(wxVERTICAL);
     m_og->sizer->Add(m_settings_list_sizer, 1, wxEXPAND | wxLEFT, 5);
+
+    m_bmp_delete = ScalableBitmap(parent, "cross");
 }
 
 void ObjectSettings::update_settings_list()
@@ -77,14 +79,11 @@ void ObjectSettings::update_settings_list()
 		{
 			auto opt_key = (line.get_options())[0].opt_id;  //we assume that we have one option per line
 
-			auto btn = new wxBitmapButton(parent, wxID_ANY, create_scaled_bitmap(m_parent, "cross"/*"colorchange_delete_on.png"*/),
-				wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
-#ifdef __WXMSW__
-            btn->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
-#endif // __WXMSW__
+			auto btn = new ScalableButton(parent, wxID_ANY, m_bmp_delete);
+
 			btn->Bind(wxEVT_BUTTON, [opt_key, config, this](wxEvent &event) {
 				config->erase(opt_key);
-                wxGetApp().obj_list()->part_settings_changed();
+                wxGetApp().obj_list()->changed_object();
                 wxTheApp->CallAfter([this]() {
                     wxWindowUpdateLocker noUpdates(m_parent);
                     update_settings_list(); 
@@ -123,22 +122,31 @@ void ObjectSettings::update_settings_list()
                     continue;
 
                 auto optgroup = std::make_shared<ConfigOptionsGroup>(m_og->ctrl_parent(), cat.first, config, false, extra_column);
-                optgroup->label_width = 15 * wxGetApp().em_unit();
-                optgroup->sidetext_width = 5.5 * wxGetApp().em_unit();
+                optgroup->label_width = 15;
+                optgroup->sidetext_width = 5.5;
 
                 optgroup->m_on_change = [](const t_config_option_key& opt_id, const boost::any& value) {
-                                        wxGetApp().obj_list()->part_settings_changed(); };
+                                        wxGetApp().obj_list()->changed_object(); };
 
                 for (auto& opt : cat.second)
                 {
                     if (opt == "extruder")
                         continue;
                     Option option = optgroup->get_option(opt);
-                    option.opt.width = 12 * wxGetApp().em_unit();
+                    option.opt.width = 12;
                     optgroup->append_single_option_line(option);
                 }
                 optgroup->reload_config();
                 m_settings_list_sizer->Add(optgroup->sizer, 0, wxEXPAND | wxALL, 0);
+
+                // call back for rescaling of the extracolumn control
+                optgroup->rescale_extra_column_item = [this](wxWindow* win) {
+                    auto *ctrl = dynamic_cast<ScalableButton*>(win);
+                    if (ctrl == nullptr)
+                        return;
+                    ctrl->SetBitmap_(m_bmp_delete);
+                };
+
                 m_og_settings.push_back(optgroup);
 
                 categories.push_back(cat.first);
@@ -163,5 +171,13 @@ void ObjectSettings::UpdateAndShow(const bool show)
     OG_Settings::UpdateAndShow(show);
 }
 
+void ObjectSettings::msw_rescale()
+{
+    m_bmp_delete.msw_rescale();
+
+    for (auto group : m_og_settings)
+        group->msw_rescale();
+}
+
 } //namespace GUI
 } //namespace Slic3r 
\ No newline at end of file
diff --git a/src/slic3r/GUI/GUI_ObjectSettings.hpp b/src/slic3r/GUI/GUI_ObjectSettings.hpp
index 12115e208..3d49f13b7 100644
--- a/src/slic3r/GUI/GUI_ObjectSettings.hpp
+++ b/src/slic3r/GUI/GUI_ObjectSettings.hpp
@@ -4,6 +4,7 @@
 #include <memory>
 #include <vector>
 #include <wx/panel.h>
+#include "wxExtensions.hpp"
 
 class wxBoxSizer;
 
@@ -37,12 +38,15 @@ class ObjectSettings : public OG_Settings
     // option groups for settings
     std::vector <std::shared_ptr<ConfigOptionsGroup>> m_og_settings;
 
+    ScalableBitmap m_bmp_delete;
+
 public:
     ObjectSettings(wxWindow* parent);
     ~ObjectSettings() {}
 
     void        update_settings_list();
     void        UpdateAndShow(const bool show) override;
+    void        msw_rescale();
 };
 
 }}
diff --git a/src/slic3r/GUI/GUI_Preview.cpp b/src/slic3r/GUI/GUI_Preview.cpp
index 206253451..88fea933e 100644
--- a/src/slic3r/GUI/GUI_Preview.cpp
+++ b/src/slic3r/GUI/GUI_Preview.cpp
@@ -396,6 +396,18 @@ void Preview::refresh_print()
     load_print(true);
 }
 
+void Preview::msw_rescale()
+{
+    // rescale slider
+    if (m_slider) m_slider->msw_rescale();
+
+    // rescale warning legend on the canvas
+    get_canvas3d()->msw_rescale();
+
+    // rescale legend
+    refresh_print();
+}
+
 void Preview::bind_event_handlers()
 {
     this->Bind(wxEVT_SIZE, &Preview::on_size, this);
@@ -507,7 +519,7 @@ void Preview::on_checkbox_shells(wxCommandEvent& evt)
 
 void Preview::create_double_slider()
 {
-    m_slider = new PrusaDoubleSlider(this, wxID_ANY, 0, 0, 0, 100);
+    m_slider = new DoubleSlider(this, wxID_ANY, 0, 0, 0, 100);
     m_double_slider_sizer->Add(m_slider, 0, wxEXPAND, 0);
 
     // sizer, m_canvas_widget
diff --git a/src/slic3r/GUI/GUI_Preview.hpp b/src/slic3r/GUI/GUI_Preview.hpp
index a2929f2e6..2540980f4 100644
--- a/src/slic3r/GUI/GUI_Preview.hpp
+++ b/src/slic3r/GUI/GUI_Preview.hpp
@@ -13,7 +13,7 @@ class wxStaticText;
 class wxChoice;
 class wxComboCtrl;
 class wxCheckBox;
-class PrusaDoubleSlider;
+class DoubleSlider;
 
 namespace Slic3r {
 
@@ -99,7 +99,7 @@ class Preview : public wxPanel
     bool m_loaded;
     bool m_enabled;
 
-    PrusaDoubleSlider* m_slider {nullptr};
+    DoubleSlider* m_slider {nullptr};
 
 public:
     Preview(wxWindow* parent, Bed3D& bed, Camera& camera, GLToolbar& view_toolbar, Model* model, DynamicPrintConfig* config, 
@@ -120,6 +120,8 @@ public:
     void reload_print(bool keep_volumes = false);
     void refresh_print();
 
+    void msw_rescale();
+
 private:
     bool init(wxWindow* parent, Bed3D& bed, Camera& camera, GLToolbar& view_toolbar, Model* model);
 
diff --git a/src/slic3r/GUI/GUI_Utils.hpp b/src/slic3r/GUI/GUI_Utils.hpp
index e12153625..25cf25b16 100644
--- a/src/slic3r/GUI/GUI_Utils.hpp
+++ b/src/slic3r/GUI/GUI_Utils.hpp
@@ -16,6 +16,7 @@
 #include <wx/panel.h>
 #include <wx/dcclient.h>
 #include <wx/debug.h>
+#include <wx/settings.h>
 
 class wxCheckBox;
 class wxTopLevelWindow;
@@ -58,35 +59,119 @@ public:
         : P(parent, id, title, pos, size, style, name)
     {
         m_scale_factor = (float)get_dpi_for_window(this) / (float)DPI_DEFAULT;
+        m_normal_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+        // An analog of em_unit value from GUI_App.
+        m_em_unit = std::max<size_t>(10, 10 * m_scale_factor);
+
+        m_prev_scale_factor = m_scale_factor;
+
         recalc_font();
 
         this->Bind(EVT_DPI_CHANGED, [this](const DpiChangedEvent &evt) {
             m_scale_factor = (float)evt.dpi / (float)DPI_DEFAULT;
-            on_dpi_changed(evt.rect);
+
+            if (!m_can_rescale)
+                return;
+
+            if (is_new_scale_factor())
+                rescale(evt.rect);
+        });
+
+        this->Bind(wxEVT_MOVE_START, [this](wxMoveEvent& event)
+        {
+            event.Skip();
+
+            // Suppress application rescaling, when a MainFrame moving is not ended
+            m_can_rescale = false;
+        });
+
+        this->Bind(wxEVT_MOVE_END, [this](wxMoveEvent& event)
+        {
+            event.Skip();
+
+            m_can_rescale = is_new_scale_factor();
+
+            // If scale factor is different after moving of MainFrame ...
+            if (m_can_rescale)
+                // ... rescale application
+                rescale(event.GetRect());
+            else
+            // set value to _true_ in purpose of possibility of a display dpi changing from System Settings
+                m_can_rescale = true;
         });
     }
 
     virtual ~DPIAware() {}
 
-    float scale_factor() const { return m_scale_factor; }
-    int em_unit() const { return m_em_unit; }
-    int font_size() const { return m_font_size; }
+    float   scale_factor() const        { return m_scale_factor; }
+    float   prev_scale_factor() const   { return m_prev_scale_factor; }
+
+    int     em_unit() const             { return m_em_unit; }
+    int     font_size() const           { return m_font_size; }
+    const wxFont& normal_font() const   { return m_normal_font; }
 
 protected:
     virtual void on_dpi_changed(const wxRect &suggested_rect) = 0;
 
 private:
-    int m_scale_factor;
+    float m_scale_factor;
     int m_em_unit;
     int m_font_size;
 
+    wxFont m_normal_font;
+    float m_prev_scale_factor;
+    bool  m_can_rescale{ true };
+
     void recalc_font()
     {
         wxClientDC dc(this);
         const auto metrics = dc.GetFontMetrics();
         m_font_size = metrics.height;
-        m_em_unit = metrics.averageWidth;
+//         m_em_unit = metrics.averageWidth;
     }
+
+    // check if new scale is differ from previous
+    bool    is_new_scale_factor() const { return fabs(m_scale_factor - m_prev_scale_factor) > 0.001; }
+
+    // recursive function for scaling fonts for all controls in Window
+    void    scale_controls_fonts(wxWindow *window, const float scale_f)
+    {
+        auto children = window->GetChildren();
+
+        for (auto child : children) {
+            scale_controls_fonts(child, scale_f);
+            child->SetFont(child->GetFont().Scaled(scale_f));
+        }
+
+        window->Layout();
+    }
+
+    void    rescale(const wxRect &suggested_rect)
+    {
+        this->Freeze();
+        const float relative_scale_factor = m_scale_factor / m_prev_scale_factor;
+
+        // rescale fonts of all controls
+        scale_controls_fonts(this, relative_scale_factor);
+        this->SetFont(this->GetFont().Scaled(relative_scale_factor));
+
+
+        // rescale normal_font value
+        m_normal_font = m_normal_font.Scaled(relative_scale_factor);
+
+        // An analog of em_unit value from GUI_App.
+        m_em_unit = std::max<size_t>(10, 10 * m_scale_factor);
+
+        // rescale missed controls sizes and images
+        on_dpi_changed(suggested_rect);
+
+        this->Layout();
+        this->Thaw();
+
+        // reset previous scale factor from current scale factor value
+        m_prev_scale_factor = m_scale_factor;
+    }
+
 };
 
 typedef DPIAware<wxFrame> DPIFrame;
diff --git a/src/slic3r/GUI/KBShortcutsDialog.cpp b/src/slic3r/GUI/KBShortcutsDialog.cpp
index 3c2f4182b..2fb453750 100644
--- a/src/slic3r/GUI/KBShortcutsDialog.cpp
+++ b/src/slic3r/GUI/KBShortcutsDialog.cpp
@@ -10,26 +10,28 @@ namespace Slic3r {
 namespace GUI {
 
 KBShortcutsDialog::KBShortcutsDialog()
-    : wxDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("Keyboard Shortcuts")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
+    : DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("Keyboard Shortcuts")), 
+     wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
 {
-	SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));    
+	SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
 
 	auto main_sizer = new wxBoxSizer(wxVERTICAL);
 
     // logo
-	const wxBitmap logo_bmp = create_scaled_bitmap(this, "Slic3r_32px.png", 32);
+    m_logo_bmp = ScalableBitmap(this, "Slic3r_32px.png", 32);
 
     // fonts
-    wxFont head_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT).Bold();
+    const wxFont& font = wxGetApp().normal_font();
+    const wxFont& bold_font = wxGetApp().bold_font();   
+    SetFont(font);
+
+    wxFont head_font = bold_font;
 #ifdef __WXOSX__
     head_font.SetPointSize(14);
 #else
-    head_font.SetPointSize(12);
+    head_font.SetPointSize(bold_font.GetPointSize() + 2);
 #endif // __WXOSX__
 
-    const wxFont& font = wxGetApp().small_font();
-    const wxFont& bold_font = wxGetApp().bold_font();
-
     fill_shortcuts();
 
     auto panel = new wxPanel(this);
@@ -43,22 +45,25 @@ KBShortcutsDialog::KBShortcutsDialog()
     wxBoxSizer* r_sizer = new wxBoxSizer(wxVERTICAL);
     main_grid_sizer->Add(r_sizer, 0);
 
+    m_head_bitmaps.reserve(m_full_shortcuts.size());
+    const wxSize topic_size = wxSize(10 * wxGetApp().em_unit(), -1);
+
     for (auto& sc : m_full_shortcuts)
     {
-//         auto sizer = sc.first == _(L("Main Shortcuts")) ? l_sizer : r_sizer;
-        auto sizer = sc.second.second == 0 ? l_sizer : r_sizer;
+        auto sizer = sc.second.second == szLeft ? l_sizer : r_sizer;
         wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL);
         sizer->Add(hsizer, 0, wxEXPAND | wxTOP | wxBOTTOM, 10);
 
         // logo
-        auto *logo = new wxStaticBitmap(panel, wxID_ANY, logo_bmp);
-        hsizer->Add(logo, 0, wxEXPAND | wxLEFT | wxRIGHT, 15);
+        m_head_bitmaps.push_back(new wxStaticBitmap(panel, wxID_ANY, m_logo_bmp.bmp()));
+        hsizer->Add(m_head_bitmaps.back(), 0, wxEXPAND | wxLEFT | wxRIGHT, 15);
 
         // head
-        wxStaticText* head = new wxStaticText(panel, wxID_ANY, sc.first, wxDefaultPosition, wxSize(20 * wxGetApp().em_unit(), -1));
+        wxStaticText* head = new wxStaticText(panel, wxID_ANY, sc.first, wxDefaultPosition, topic_size);
         head->SetFont(head_font);
         hsizer->Add(head, 0, wxALIGN_CENTER_VERTICAL);
 
+
         // Shortcuts list
         auto grid_sizer = new wxFlexGridSizer(2, 5, 15);
         sizer->Add(grid_sizer, 0, wxEXPAND | wxLEFT| wxRIGHT, 15);
@@ -121,7 +126,7 @@ void KBShortcutsDialog::fill_shortcuts()
     main_shortcuts.push_back(Shortcut("?"               ,L("Show keyboard shortcuts list")));
     main_shortcuts.push_back(Shortcut(ctrl+"LeftMouse"  ,L("Select multiple object/Move multiple object")));
 
-    m_full_shortcuts.push_back(std::make_pair( _(L("Main Shortcuts")), std::make_pair(main_shortcuts, 0) ));
+    m_full_shortcuts.push_back(std::make_pair(_(L("Main Shortcuts")), std::make_pair(main_shortcuts, szLeft)));
 
 
     Shortcuts plater_shortcuts;
@@ -148,7 +153,7 @@ void KBShortcutsDialog::fill_shortcuts()
     plater_shortcuts.push_back(Shortcut("O",        L("Zoom out")));
     plater_shortcuts.push_back(Shortcut("ESC",      L("Unselect gizmo, keep object selection")));
 
-    m_full_shortcuts.push_back(std::make_pair(_(L("Plater Shortcuts")), std::make_pair(plater_shortcuts, 1)));
+    m_full_shortcuts.push_back(std::make_pair(_(L("Plater Shortcuts")), std::make_pair(plater_shortcuts, szRight)));
 
 
 //     Shortcuts gizmo_shortcuts;
@@ -168,7 +173,7 @@ void KBShortcutsDialog::fill_shortcuts()
     preview_shortcuts.push_back(Shortcut("U",               L("Upper Layer")));
     preview_shortcuts.push_back(Shortcut("D",               L("Lower Layer")));
 
-    m_full_shortcuts.push_back(std::make_pair( _(L("Preview Shortcuts")), std::make_pair(preview_shortcuts, 0) ));
+    m_full_shortcuts.push_back(std::make_pair(_(L("Preview Shortcuts")), std::make_pair(preview_shortcuts, szLeft)));
 
 
     Shortcuts layers_slider_shortcuts;
@@ -181,7 +186,26 @@ void KBShortcutsDialog::fill_shortcuts()
     layers_slider_shortcuts.push_back(Shortcut("+",             L("Add color change marker for current layer")));
     layers_slider_shortcuts.push_back(Shortcut("-",             L("Delete color change marker for current layer")));
 
-    m_full_shortcuts.push_back(std::make_pair( _(L("Layers Slider Shortcuts")), std::make_pair(layers_slider_shortcuts, 1) ));
+    m_full_shortcuts.push_back(std::make_pair(_(L("Layers Slider Shortcuts")), std::make_pair(layers_slider_shortcuts, szRight)));
+}
+
+void KBShortcutsDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+    m_logo_bmp.msw_rescale();
+
+    for (wxStaticBitmap* bmp : m_head_bitmaps)
+        bmp->SetBitmap(m_logo_bmp.bmp());
+
+    const int em = em_unit();
+
+    msw_buttons_rescale(this, em, { wxID_OK });
+
+    const wxSize& size = wxSize(85 * em, 75 * em);
+
+    SetMinSize(size);
+    Fit();
+
+    Refresh();
 }
 
 void KBShortcutsDialog::onCloseDialog(wxEvent &)
diff --git a/src/slic3r/GUI/KBShortcutsDialog.hpp b/src/slic3r/GUI/KBShortcutsDialog.hpp
index d8905e1ce..66fe7c399 100644
--- a/src/slic3r/GUI/KBShortcutsDialog.hpp
+++ b/src/slic3r/GUI/KBShortcutsDialog.hpp
@@ -5,24 +5,38 @@
 #include <map>
 #include <vector>
 
+#include "GUI_Utils.hpp"
+#include "wxExtensions.hpp"
+
 namespace Slic3r { 
 namespace GUI {
 
-class KBShortcutsDialog : public wxDialog
+class KBShortcutsDialog : public DPIDialog
 {
+    enum PLACED_SIZER_ID
+    {
+        szLeft = 0,
+        szRight
+    };
+
     typedef std::pair<std::string, std::string> Shortcut;
     typedef std::vector< Shortcut >             Shortcuts;
-    typedef std::vector< std::pair<wxString, std::pair<Shortcuts, int>> >   ShortcutsVec;
+    typedef std::vector< std::pair<wxString, std::pair<Shortcuts, PLACED_SIZER_ID>> >   ShortcutsVec;
 
     wxString text_info {wxEmptyString};
 
-    ShortcutsVec m_full_shortcuts;
+    ShortcutsVec    m_full_shortcuts;
+    ScalableBitmap  m_logo_bmp;
+    std::vector<wxStaticBitmap*>    m_head_bitmaps;
 
 public:
     KBShortcutsDialog();
     
     void fill_shortcuts();
 
+protected:
+    void on_dpi_changed(const wxRect &suggested_rect) override;
+
 private:
     void onCloseDialog(wxEvent &);
 };
diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp
index 4814a35d9..571b57235 100644
--- a/src/slic3r/GUI/MainFrame.cpp
+++ b/src/slic3r/GUI/MainFrame.cpp
@@ -258,7 +258,44 @@ bool MainFrame::can_delete_all() const
 
 void MainFrame::on_dpi_changed(const wxRect &suggested_rect)
 {
-    // TODO
+    wxGetApp().update_fonts();
+
+    // _strange_ workaround for correct em_unit calculation
+    const int new_em_unit = scale_factor() * 10;
+    wxGetApp().set_em_unit(std::max<size_t>(10, new_em_unit));
+
+    /* Load default preset bitmaps before a tabpanel initialization,
+     * but after filling of an em_unit value
+     */
+    wxGetApp().preset_bundle->load_default_preset_bitmaps(this);
+
+    // update Plater
+    wxGetApp().plater()->msw_rescale();
+
+    // update Tabs
+    for (auto tab : wxGetApp().tabs_list)
+        tab->msw_rescale();
+
+    // Workarounds for correct Window rendering after rescale
+
+    /* Even if Window is maximized during moving, 
+     * first of all we should imitate Window resizing. So:
+     * 1. cancel maximization, if it was set
+     * 2. imitate resizing
+     * 3. set maximization, if it was set
+     */
+    const bool is_maximized = this->IsMaximized();
+    if (is_maximized)
+        this->Maximize(false);
+
+    /* To correct window rendering (especially redraw of a status bar)
+     * we should imitate window resizing.
+     */
+    const wxSize& sz = this->GetSize();
+    this->SetSize(sz.x + 1, sz.y + 1);
+    this->SetSize(sz);
+
+    this->Maximize(is_maximized);
 }
 
 void MainFrame::init_menubar()
@@ -337,7 +374,7 @@ void MainFrame::init_menubar()
         append_menu_item(fileMenu, wxID_ANY, _(L("&Repair STL file")) + dots, _(L("Automatically repair an STL file")),
             [this](wxCommandEvent&) { repair_stl(); }, "wrench");
         fileMenu->AppendSeparator();
-        append_menu_item(fileMenu, wxID_EXIT, _(L("&Quit")), _(L("Quit Slic3r")),
+        append_menu_item(fileMenu, wxID_EXIT, _(L("&Quit")), wxString::Format(_(L("Quit %s")), SLIC3R_APP_NAME),
             [this](wxCommandEvent&) { Close(false); });
 
         Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(m_plater != nullptr); }, item_open->GetId());
@@ -474,9 +511,11 @@ void MainFrame::init_menubar()
 //#            wxTheApp->check_version(1);
 //#        });
 //#        $versioncheck->Enable(wxTheApp->have_version_check);
-        append_menu_item(helpMenu, wxID_ANY, _(L("Slic3r &Website")), _(L("Open the Slic3r website in your browser")),
+        append_menu_item(helpMenu, wxID_ANY, wxString::Format(_(L("%s &Website")), SLIC3R_APP_NAME), 
+                                             wxString::Format(_(L("Open the %s website in your browser")), SLIC3R_APP_NAME),
             [this](wxCommandEvent&) { wxLaunchDefaultBrowser("http://slic3r.org/"); });
-        append_menu_item(helpMenu, wxID_ANY, _(L("Slic3r &Manual")), _(L("Open the Slic3r manual in your browser")),
+        append_menu_item(helpMenu, wxID_ANY, wxString::Format(_(L("%s &Manual")), SLIC3R_APP_NAME),
+                                             wxString::Format(_(L("Open the %s manual in your browser")), SLIC3R_APP_NAME),
             [this](wxCommandEvent&) { wxLaunchDefaultBrowser("http://manual.slic3r.org/"); });
         helpMenu->AppendSeparator();
         append_menu_item(helpMenu, wxID_ANY, _(L("System &Info")), _(L("Show system information")), 
diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp
index a5d3a1f6d..a8b2be2bc 100644
--- a/src/slic3r/GUI/MainFrame.hpp
+++ b/src/slic3r/GUI/MainFrame.hpp
@@ -4,6 +4,7 @@
 #include "libslic3r/PrintConfig.hpp"
 
 #include <wx/frame.h>
+#include <wx/settings.h>
 #include <wx/string.h>
 
 #include <string>
diff --git a/src/slic3r/GUI/MsgDialog.cpp b/src/slic3r/GUI/MsgDialog.cpp
index 771599b8e..ba2c5ed0c 100644
--- a/src/slic3r/GUI/MsgDialog.cpp
+++ b/src/slic3r/GUI/MsgDialog.cpp
@@ -25,12 +25,14 @@ namespace GUI {
 
 MsgDialog::MsgDialog(wxWindow *parent, const wxString &title, const wxString &headline, wxWindowID button_id, wxBitmap bitmap)
 	: wxDialog(parent, wxID_ANY, title, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
-	, boldfont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT))
+	, boldfont(wxGetApp().normal_font()/*wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT)*/)
 	, content_sizer(new wxBoxSizer(wxVERTICAL))
 	, btn_sizer(new wxBoxSizer(wxHORIZONTAL))
 {
 	boldfont.SetWeight(wxFONTWEIGHT_BOLD);
 
+    this->SetFont(wxGetApp().normal_font());
+
 	auto *topsizer = new wxBoxSizer(wxHORIZONTAL);
 	auto *rightsizer = new wxBoxSizer(wxVERTICAL);
 
@@ -68,7 +70,8 @@ MsgDialog::~MsgDialog() {}
 // ErrorDialog
 
 ErrorDialog::ErrorDialog(wxWindow *parent, const wxString &msg)
-	: MsgDialog(parent, _(L("Slic3r error")), _(L("Slic3r has encountered an error")),
+    : MsgDialog(parent, wxString::Format(_(L("%s error")), SLIC3R_APP_NAME), 
+                        wxString::Format(_(L("%s has encountered an error")), SLIC3R_APP_NAME),
 		wxID_NONE)
 	, msg(msg)
 {
diff --git a/src/slic3r/GUI/OptionsGroup.cpp b/src/slic3r/GUI/OptionsGroup.cpp
index a4686d4d2..cdcde972a 100644
--- a/src/slic3r/GUI/OptionsGroup.cpp
+++ b/src/slic3r/GUI/OptionsGroup.cpp
@@ -166,37 +166,45 @@ void OptionsGroup::append_line(const Line& line, wxStaticText**	full_Label/* = n
 #endif /* __WXGTK__ */
 
 	// if we have an extra column, build it
-	if (extra_column)
-		grid_sizer->Add(extra_column(this->ctrl_parent(), line), 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 3);
+        if (extra_column)
+        {
+            m_extra_column_item_ptrs.push_back(extra_column(this->ctrl_parent(), line));
+            grid_sizer->Add(m_extra_column_item_ptrs.back(), 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 3);
+        }
 
     // Build a label if we have it
 	wxStaticText* label=nullptr;
     if (label_width != 0) {
     	if (! line.near_label_widget || ! line.label.IsEmpty()) {
+    		// Only create the label if it is going to be displayed.
 			long label_style = staticbox ? 0 : wxALIGN_RIGHT;
-	#ifdef __WXGTK__
+#ifdef __WXGTK__
 			// workaround for correct text align of the StaticBox on Linux
 			// flags wxALIGN_RIGHT and wxALIGN_CENTRE don't work when Ellipsize flags are _not_ given.
 			// Text is properly aligned only when Ellipsize is checked.
 			label_style |= staticbox ? 0 : wxST_ELLIPSIZE_END;
-	#endif /* __WXGTK__ */
+#endif /* __WXGTK__ */
 			label = new wxStaticText(this->ctrl_parent(), wxID_ANY, line.label + (line.label.IsEmpty() ? "" : ": "), 
-								wxDefaultPosition, wxSize(label_width, -1), label_style);
+								wxDefaultPosition, wxSize(label_width*wxGetApp().em_unit(), -1), label_style);
 			label->SetBackgroundStyle(wxBG_STYLE_PAINT);
-	        label->SetFont(label_font);
-	        label->Wrap(label_width); // avoid a Linux/GTK bug
+	        label->SetFont(wxGetApp().normal_font());
+	        label->Wrap(label_width*wxGetApp().em_unit()); // avoid a Linux/GTK bug
 	    }
-        if (! line.near_label_widget)
+        if (!line.near_label_widget)
             grid_sizer->Add(label, 0, (staticbox ? 0 : wxALIGN_RIGHT | wxRIGHT) | wxALIGN_CENTER_VERTICAL, line.label.IsEmpty() ? 0 : 5);
-        else if (line.near_label_widget && line.label.IsEmpty())
-            grid_sizer->Add(line.near_label_widget(this->ctrl_parent()), 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 7);
         else {
-            // If we're here, we have some widget near the label
-            // so we need a horizontal sizer to arrange these things
-            auto sizer = new wxBoxSizer(wxHORIZONTAL);
-            grid_sizer->Add(sizer, 0, wxEXPAND | (staticbox ? wxALL : wxBOTTOM | wxTOP | wxLEFT), staticbox ? 0 : 1);
-            sizer->Add(line.near_label_widget(this->ctrl_parent()), 0, wxRIGHT, 7);
-            sizer->Add(label, 0, (staticbox ? 0 : wxALIGN_RIGHT | wxRIGHT) | wxALIGN_CENTER_VERTICAL, 5);
+            m_near_label_widget_ptrs.push_back(line.near_label_widget(this->ctrl_parent()));
+
+            if (line.label.IsEmpty())
+                grid_sizer->Add(m_near_label_widget_ptrs.back(), 0, wxRIGHT | wxALIGN_CENTER_VERTICAL, 7);
+            else {
+                // If we're here, we have some widget near the label
+                // so we need a horizontal sizer to arrange these things
+                auto sizer = new wxBoxSizer(wxHORIZONTAL);
+                grid_sizer->Add(sizer, 0, wxEXPAND | (staticbox ? wxALL : wxBOTTOM | wxTOP | wxLEFT), staticbox ? 0 : 1);
+                sizer->Add(m_near_label_widget_ptrs.back(), 0, wxRIGHT, 7);
+                sizer->Add(label, 0, (staticbox ? 0 : wxALIGN_RIGHT | wxRIGHT) | wxALIGN_CENTER_VERTICAL, 5);
+            }
         }
 		if (label != nullptr && line.label_tooltip != "")
 			label->SetToolTip(line.label_tooltip);
@@ -237,14 +245,13 @@ void OptionsGroup::append_line(const Line& line, wxStaticText**	full_Label/* = n
 		wxSizer* sizer_tmp = sizer;
 		// add label if any
 		if (option.label != "") {
-// 			wxString str_label = _(option.label);
 //!			To correct translation by context have to use wxGETTEXT_IN_CONTEXT macro from wxWidget 3.1.1
 			wxString str_label = (option.label == "Top" || option.label == "Bottom") ?
 								_CTX(option.label, "Layers") :
 								_(option.label);
 			label = new wxStaticText(this->ctrl_parent(), wxID_ANY, str_label + ": ", wxDefaultPosition, wxDefaultSize);
 			label->SetBackgroundStyle(wxBG_STYLE_PAINT);
-			label->SetFont(label_font);
+            label->SetFont(wxGetApp().normal_font());
 			sizer_tmp->Add(label, 0, /*wxALIGN_RIGHT |*/ wxALIGN_CENTER_VERTICAL, 0);
 		}
 
@@ -269,9 +276,9 @@ void OptionsGroup::append_line(const Line& line, wxStaticText**	full_Label/* = n
 		// add sidetext if any
 		if (option.sidetext != "") {
 			auto sidetext = new wxStaticText(	this->ctrl_parent(), wxID_ANY, _(option.sidetext), wxDefaultPosition, 
-												wxSize(sidetext_width, -1)/*wxDefaultSize*/, wxALIGN_LEFT);
+												/*wxSize(sidetext_width*wxGetApp().em_unit(), -1)*/wxDefaultSize, wxALIGN_LEFT);
 			sidetext->SetBackgroundStyle(wxBG_STYLE_PAINT);
-			sidetext->SetFont(sidetext_font);
+            sidetext->SetFont(wxGetApp().normal_font());
 			sizer_tmp->Add(sidetext, 0, wxLEFT | wxALIGN_CENTER_VERTICAL, 4);
 			field->set_side_text_ptr(sidetext);
 		}
@@ -303,7 +310,10 @@ void OptionsGroup::append_line(const Line& line, wxStaticText**	full_Label/* = n
 }
 
 Line OptionsGroup::create_single_option_line(const Option& option) const {
-	Line retval{ _(option.opt.label), _(option.opt.tooltip) };
+// 	Line retval{ _(option.opt.label), _(option.opt.tooltip) };
+    wxString tooltip = _(option.opt.tooltip);
+    edit_tooltip(tooltip);
+	Line retval{ _(option.opt.label), tooltip };
     Option tmp(option);
     tmp.opt.label = std::string("");
     retval.append_option(tmp);
@@ -479,6 +489,59 @@ bool ConfigOptionsGroup::update_visibility(ConfigOptionMode mode) {
     return true;
 }
 
+void ConfigOptionsGroup::msw_rescale()
+{
+    // update bitmaps for extra column items (like "mode markers" or buttons on settings panel)
+    if (rescale_extra_column_item)
+        for (auto extra_col : m_extra_column_item_ptrs)
+            rescale_extra_column_item(extra_col);
+
+    // update bitmaps for near label widgets (like "Set uniform scale" button on settings panel)
+    if (rescale_near_label_widget)
+        for (auto near_label_widget : m_near_label_widget_ptrs)
+            rescale_near_label_widget(near_label_widget);
+
+    // update undo buttons : rescale bitmaps
+    for (const auto& field : m_fields)
+        field.second->msw_rescale();
+
+    const int em = em_unit(parent());
+
+    // rescale width of label column
+    if (!m_options_mode.empty() && label_width > 1)
+    {
+        const int cols = m_grid_sizer->GetCols();
+        const int rows = m_grid_sizer->GetEffectiveRowsCount();
+        const int label_col = extra_column == nullptr ? 0 : 1;
+
+        for (int i = 0; i < rows; i++)
+        {
+            const wxSizerItem* label_item = m_grid_sizer->GetItem(i*cols+label_col);
+            if (label_item->IsWindow())
+            {
+                auto label = dynamic_cast<wxStaticText*>(label_item->GetWindow());
+                if (label != nullptr) {
+                    const int label_height = int(1.5f*label->GetFont().GetPixelSize().y + 0.5f);
+                    label->SetMinSize(wxSize(label_width*em, /*-1*/label_height));
+                }
+            }
+            else if (label_item->IsSizer()) // case when we have near_label_widget
+            {
+                const wxSizerItem* l_item = label_item->GetSizer()->GetItem(1);
+                if (l_item->IsWindow())
+                {
+                    auto label = dynamic_cast<wxStaticText*>(l_item->GetWindow());
+                    if (label != nullptr) {
+                        const int label_height = int(1.5f*label->GetFont().GetPixelSize().y + 0.5f);
+                        label->SetMinSize(wxSize(label_width*em, /*-1*/label_height));
+                    }
+                }
+            }
+        }
+        m_grid_sizer->Layout();
+    }
+}
+
 boost::any ConfigOptionsGroup::config_value(const std::string& opt_key, int opt_index, bool deserialize) {
 
 	if (deserialize) {
diff --git a/src/slic3r/GUI/OptionsGroup.hpp b/src/slic3r/GUI/OptionsGroup.hpp
index 4eec68a37..fa8a19940 100644
--- a/src/slic3r/GUI/OptionsGroup.hpp
+++ b/src/slic3r/GUI/OptionsGroup.hpp
@@ -72,7 +72,7 @@ private:
     std::vector<widget_t>	m_extra_widgets;//! {std::vector<widget_t>()};
 };
 
-using column_t = std::function<wxWindow*(wxWindow* parent, const Line&)>;//std::function<wxSizer*(const Line&)>;
+using column_t = std::function<wxWindow*(wxWindow* parent, const Line&)>;
 
 using t_optionfield_map = std::map<t_config_option_key, t_field>;
 using t_opt_map = std::map< std::string, std::pair<std::string, int> >;
@@ -82,7 +82,7 @@ class OptionsGroup {
 public:
     const bool		staticbox {true};
     const wxString	title {wxString("")};
-    size_t			label_width = 20 * wxGetApp().em_unit();// {200};
+    size_t			label_width = 20 ;// {200};
     wxSizer*		sizer {nullptr};
     column_t		extra_column {nullptr};
     t_change		m_on_change { nullptr };
@@ -94,6 +94,9 @@ public:
 	std::function<DynamicPrintConfig()>	m_get_sys_config{ nullptr };
 	std::function<bool()>	have_sys_config{ nullptr };
 
+    std::function<void(wxWindow* win)> rescale_extra_column_item { nullptr };
+    std::function<void(wxWindow* win)> rescale_near_label_widget { nullptr };
+    
     wxFont			sidetext_font {wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) };
     wxFont			label_font {wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) };
 	int				sidetext_width{ -1 };
@@ -193,6 +196,8 @@ protected:
 	std::map<t_config_option_key, Option>	m_options;
     wxWindow*				m_parent {nullptr};
     std::vector<ConfigOptionMode>           m_options_mode;
+    std::vector<wxWindow*>                  m_extra_column_item_ptrs;
+    std::vector<wxWindow*>                  m_near_label_widget_ptrs;
 
     /// Field list, contains unique_ptrs of the derived type.
     /// using types that need to know what it is beyond the public interface 
@@ -261,6 +266,7 @@ public:
     void        Hide();
     void        Show(const bool show);
     bool        update_visibility(ConfigOptionMode mode);
+    void        msw_rescale();
 	boost::any	config_value(const std::string& opt_key, int opt_index, bool deserialize);
 	// return option value from config 
 	boost::any	get_config_value(const DynamicPrintConfig& config, const std::string& opt_key, int opt_index = -1);
diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp
index b41b27af8..4280e4dbe 100644
--- a/src/slic3r/GUI/Plater.cpp
+++ b/src/slic3r/GUI/Plater.cpp
@@ -111,6 +111,7 @@ public:
 
     bool        showing_manifold_warning_icon;
     void        show_sizer(bool show);
+    void        msw_rescale();
 };
 
 ObjectInfo::ObjectInfo(wxWindow *parent) :
@@ -118,10 +119,10 @@ ObjectInfo::ObjectInfo(wxWindow *parent) :
 {
     GetStaticBox()->SetFont(wxGetApp().bold_font());
 
-    auto *grid_sizer = new wxFlexGridSizer(4, 5, 5);
+    auto *grid_sizer = new wxFlexGridSizer(4, 5, 15);
     grid_sizer->SetFlexibleDirection(wxHORIZONTAL);
-    grid_sizer->AddGrowableCol(1, 1);
-    grid_sizer->AddGrowableCol(3, 1);
+//     grid_sizer->AddGrowableCol(1, 1);
+//     grid_sizer->AddGrowableCol(3, 1);
 
     auto init_info_label = [parent, grid_sizer](wxStaticText **info_label, wxString text_label) {
         auto *text = new wxStaticText(parent, wxID_ANY, text_label+":");
@@ -160,6 +161,11 @@ void ObjectInfo::show_sizer(bool show)
         manifold_warning_icon->Show(showing_manifold_warning_icon && show);
 }
 
+void ObjectInfo::msw_rescale()
+{
+    manifold_warning_icon->SetBitmap(create_scaled_bitmap(nullptr, "exclamation"));
+}
+
 enum SlisedInfoIdx
 {
     siFilament_m,
@@ -229,7 +235,8 @@ void SlicedInfo::SetTextAndShow(SlisedInfoIdx idx, const wxString& text, const w
 PresetComboBox::PresetComboBox(wxWindow *parent, Preset::Type preset_type) :
 wxBitmapComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(15 * wxGetApp().em_unit(), -1), 0, nullptr, wxCB_READONLY),
     preset_type(preset_type),
-    last_selected(wxNOT_FOUND)
+    last_selected(wxNOT_FOUND),
+    m_em_unit(wxGetApp().em_unit())
 {
     Bind(wxEVT_COMBOBOX, [this](wxCommandEvent &evt) {
         auto selected_item = this->GetSelection();
@@ -281,11 +288,7 @@ wxBitmapComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(15 *
         });
     }
 
-    edit_btn = new wxButton(parent, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
-#ifdef __WINDOWS__
-    edit_btn->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
-#endif
-    edit_btn->SetBitmap(create_scaled_bitmap(this, "cog"));
+    edit_btn = new ScalableButton(parent, wxID_ANY, "cog");
     edit_btn->SetToolTip(_(L("Click to edit preset")));
 
     edit_btn->Bind(wxEVT_BUTTON, ([preset_type, this](wxCommandEvent)
@@ -331,6 +334,12 @@ void PresetComboBox::check_selection()
     this->last_selected = GetSelection();
 }
 
+void PresetComboBox::msw_rescale()
+{
+    m_em_unit = wxGetApp().em_unit();
+    edit_btn->msw_rescale();
+}
+
 // Frequently changed parameters
 
 class FreqChangedParams : public OG_Settings
@@ -428,7 +437,7 @@ FreqChangedParams::FreqChangedParams(wxWindow* parent, const int label_width) :
 
     option = m_og->get_option("fill_density");
     option.opt.label = L("Infill");
-    option.opt.width = 6 * wxGetApp().em_unit();
+    option.opt.width = 6;
     option.opt.sidetext = "     ";
     line.append_option(option);
 
@@ -566,7 +575,7 @@ struct Sidebar::priv
     wxScrolledWindow *scrolled;
     wxPanel* presets_panel; // Used for MSW better layouts
 
-    PrusaModeSizer  *mode_sizer;
+    ModeSizer  *mode_sizer;
     wxFlexGridSizer *sizer_presets;
     PresetComboBox *combo_print;
     std::vector<PresetComboBox*> combos_filament;
@@ -614,9 +623,9 @@ void Sidebar::priv::show_preset_comboboxes()
 // Sidebar / public
 
 Sidebar::Sidebar(Plater *parent)
-    : wxPanel(parent), p(new priv(parent))
+    : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(40 * wxGetApp().em_unit(), -1)), p(new priv(parent))
 {
-    p->scrolled = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxSize(40 * wxGetApp().em_unit(), -1));
+    p->scrolled = new wxScrolledWindow(this, wxID_ANY/*, wxDefaultPosition, wxSize(40 * wxGetApp().em_unit(), -1)*/);
     p->scrolled->SetScrollbars(0, 20, 1, 2);
 
 
@@ -625,7 +634,7 @@ Sidebar::Sidebar(Plater *parent)
     p->scrolled->SetSizer(scrolled_sizer);
 
     // Sizer with buttons for mode changing
-    p->mode_sizer = new PrusaModeSizer(p->scrolled, 2 * wxGetApp().em_unit());
+    p->mode_sizer = new ModeSizer(p->scrolled, 2 * wxGetApp().em_unit());
 
     // The preset chooser
     p->sizer_presets = new wxFlexGridSizer(10, 1, 1, 2);
@@ -675,13 +684,8 @@ Sidebar::Sidebar(Plater *parent)
     init_combo(&p->combo_sla_material,  _(L("SLA material")),   Preset::TYPE_SLA_MATERIAL,  false);
     init_combo(&p->combo_printer,       _(L("Printer")),        Preset::TYPE_PRINTER,       false);
 
-    // calculate width of the preset labels 
-//     p->sizer_presets->Layout();
-//     const wxArrayInt& ar = p->sizer_presets->GetColWidths();
-//     const int label_width = ar.IsEmpty() ? 10*wxGetApp().em_unit() : ar.front()-4;
-
     const int margin_5  = int(0.5*wxGetApp().em_unit());// 5;
-    const int margin_10 = int(1.5*wxGetApp().em_unit());// 15;
+    const int margin_10 = 10;//int(1.5*wxGetApp().em_unit());// 15;
 
     p->sizer_params = new wxBoxSizer(wxVERTICAL);
 
@@ -703,10 +707,6 @@ Sidebar::Sidebar(Plater *parent)
     p->object_settings->Hide();
     p->sizer_params->Add(p->object_settings->get_sizer(), 0, wxEXPAND | wxTOP, margin_5);
 
-    p->btn_send_gcode = new wxButton(this, wxID_ANY, _(L("Send to printer")));
-    p->btn_send_gcode->SetFont(wxGetApp().bold_font());
-    p->btn_send_gcode->Hide();
-
     // Info boxes
     p->object_info = new ObjectInfo(p->scrolled);
     p->sliced_info = new SlicedInfo(p->scrolled);
@@ -721,10 +721,17 @@ Sidebar::Sidebar(Plater *parent)
     scrolled_sizer->Add(p->sliced_info, 0, wxEXPAND | wxTOP | wxLEFT, margin_5);
 
     // Buttons underneath the scrolled area
-    p->btn_export_gcode = new wxButton(this, wxID_ANY, _(L("Export G-code")) + dots);
-    p->btn_export_gcode->SetFont(wxGetApp().bold_font());
-    p->btn_reslice = new wxButton(this, wxID_ANY, _(L("Slice now")));
-    p->btn_reslice->SetFont(wxGetApp().bold_font());
+
+    auto init_btn = [this](wxButton **btn, wxString label) {
+        *btn = new wxButton(this, wxID_ANY, label, wxDefaultPosition, 
+                            wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
+        (*btn)->SetFont(wxGetApp().bold_font());
+    };
+
+    init_btn(&p->btn_send_gcode,   _(L("Send to printer")));
+    p->btn_send_gcode->Hide();
+    init_btn(&p->btn_export_gcode, _(L("Export G-code")) + dots);
+    init_btn(&p->btn_reslice,      _(L("Slice now")));
     enable_buttons(false);
 
     auto *btns_sizer = new wxBoxSizer(wxVERTICAL);
@@ -781,6 +788,28 @@ void Sidebar::remove_unused_filament_combos(const int current_extruder_count)
     }
 }
 
+void Sidebar::update_all_preset_comboboxes()
+{
+    PresetBundle &preset_bundle = *wxGetApp().preset_bundle;
+    const auto print_tech = preset_bundle.printers.get_edited_preset().printer_technology();
+
+    // Update the print choosers to only contain the compatible presets, update the dirty flags.
+    if (print_tech == ptFFF)
+        preset_bundle.prints.update_platter_ui(p->combo_print);
+    else {
+        preset_bundle.sla_prints.update_platter_ui(p->combo_sla_print);
+        preset_bundle.sla_materials.update_platter_ui(p->combo_sla_material);
+    }
+    // Update the printer choosers, update the dirty flags.
+    preset_bundle.printers.update_platter_ui(p->combo_printer);
+    // Update the filament choosers to only contain the compatible presets, update the color preview,
+    // update the dirty flags.
+    if (print_tech == ptFFF) {
+        for (size_t i = 0; i < p->combos_filament.size(); ++i)
+            preset_bundle.update_platter_filament_ui(i, p->combos_filament[i]);
+    }
+}
+
 void Sidebar::update_presets(Preset::Type preset_type)
 {
 	PresetBundle &preset_bundle = *wxGetApp().preset_bundle;
@@ -820,23 +849,7 @@ void Sidebar::update_presets(Preset::Type preset_type)
 
 	case Preset::TYPE_PRINTER:
 	{
-//         wxWindowUpdateLocker noUpdates_scrolled(p->scrolled);
-
-		// Update the print choosers to only contain the compatible presets, update the dirty flags.
-        if (print_tech == ptFFF)
-			preset_bundle.prints.update_platter_ui(p->combo_print);
-        else {
-            preset_bundle.sla_prints.update_platter_ui(p->combo_sla_print);
-            preset_bundle.sla_materials.update_platter_ui(p->combo_sla_material);
-        }
-		// Update the printer choosers, update the dirty flags.
-		preset_bundle.printers.update_platter_ui(p->combo_printer);
-		// Update the filament choosers to only contain the compatible presets, update the color preview,
-		// update the dirty flags.
-        if (print_tech == ptFFF) {
-            for (size_t i = 0; i < p->combos_filament.size(); ++ i)
-                preset_bundle.update_platter_filament_ui(i, p->combos_filament[i]);
-		}
+        update_all_preset_comboboxes();
 		p->show_preset_comboboxes();
 		break;
 	}
@@ -861,6 +874,37 @@ void Sidebar::update_reslice_btn_tooltip() const
     p->btn_reslice->SetToolTip(tooltip);
 }
 
+void Sidebar::msw_rescale() 
+{
+    SetMinSize(wxSize(40 * wxGetApp().em_unit(), -1));
+
+    p->mode_sizer->msw_rescale();
+
+    // Rescale preset comboboxes in respect to the current  em_unit ...
+    for (PresetComboBox* combo : std::vector<PresetComboBox*> { p->combo_print,
+                                                                p->combo_sla_print,
+                                                                p->combo_sla_material,
+                                                                p->combo_printer } )
+        combo->msw_rescale();
+    for (PresetComboBox* combo : p->combos_filament)
+        combo->msw_rescale();
+
+    // ... then refill them and set min size to correct layout of the sidebar
+    update_all_preset_comboboxes();
+
+    p->frequently_changed_parameters->get_og(true)->msw_rescale();
+    p->frequently_changed_parameters->get_og(false)->msw_rescale();
+
+    p->object_list->msw_rescale();
+
+    p->object_manipulation->get_og()->msw_rescale();
+    p->object_settings->msw_rescale();
+
+    p->object_info->msw_rescale();
+
+    p->scrolled->Layout();
+}
+
 ObjectManipulation* Sidebar::obj_manipul()
 {
     return p->object_manipulation;
@@ -1132,11 +1176,11 @@ struct Plater::priv
     MainFrame *main_frame;
 
     // Object popup menu
-    PrusaMenu object_menu;
+    MenuWithSeparators object_menu;
     // Part popup menu
-    PrusaMenu part_menu;
+    MenuWithSeparators part_menu;
     // SLA-Object popup menu
-    PrusaMenu sla_object_menu;
+    MenuWithSeparators sla_object_menu;
 
     // Removed/Prepended Items according to the view mode
     std::vector<wxMenuItem*> items_increase;
@@ -3710,22 +3754,16 @@ void Plater::changed_object(int obj_idx)
 {
     if (obj_idx < 0)
         return;
-    auto list = wxGetApp().obj_list();
-    wxASSERT(list != nullptr);
-    if (list == nullptr)
-        return;
-
-    if (list->is_parts_changed()) {
-        // recenter and re - align to Z = 0
-        auto model_object = p->model.objects[obj_idx];
-        model_object->ensure_on_bed();
-        if (this->p->printer_technology == ptSLA) {
-            // Update the SLAPrint from the current Model, so that the reload_scene()
-            // pulls the correct data, update the 3D scene.
-            this->p->update_restart_background_process(true, false);
-        } else
-            p->view3D->reload_scene(false);
+    // recenter and re - align to Z = 0
+    auto model_object = p->model.objects[obj_idx];
+    model_object->ensure_on_bed();
+    if (this->p->printer_technology == ptSLA) {
+        // Update the SLAPrint from the current Model, so that the reload_scene()
+        // pulls the correct data, update the 3D scene.
+        this->p->update_restart_background_process(true, false);
     }
+    else
+        p->view3D->reload_scene(false);
 
     // update print
     this->p->schedule_background_process();
@@ -3736,26 +3774,19 @@ void Plater::changed_objects(const std::vector<size_t>& object_idxs)
     if (object_idxs.empty())
         return;
 
-    auto list = wxGetApp().obj_list();
-    wxASSERT(list != nullptr);
-    if (list == nullptr)
-        return;
-
-    if (list->is_parts_changed()) {
-        for (int obj_idx : object_idxs)
-        {
-            if (obj_idx < p->model.objects.size())
-                // recenter and re - align to Z = 0
-                p->model.objects[obj_idx]->ensure_on_bed();
-        }
-        if (this->p->printer_technology == ptSLA) {
-            // Update the SLAPrint from the current Model, so that the reload_scene()
-            // pulls the correct data, update the 3D scene.
-            this->p->update_restart_background_process(true, false);
-        }
-        else
-            p->view3D->reload_scene(false);
+    for (int obj_idx : object_idxs)
+    {
+        if (obj_idx < p->model.objects.size())
+            // recenter and re - align to Z = 0
+            p->model.objects[obj_idx]->ensure_on_bed();
     }
+    if (this->p->printer_technology == ptSLA) {
+        // Update the SLAPrint from the current Model, so that the reload_scene()
+        // pulls the correct data, update the 3D scene.
+        this->p->update_restart_background_process(true, false);
+    }
+    else
+        p->view3D->reload_scene(false);
 
     // update print
     this->p->schedule_background_process();
@@ -3798,6 +3829,18 @@ bool Plater::can_paste_from_clipboard() const
     return true;
 }
 
+void Plater::msw_rescale()
+{
+    p->preview->msw_rescale();
+
+    p->view3D->get_canvas3d()->msw_rescale();
+
+    p->sidebar->msw_rescale();
+
+    Layout();
+    GetParent()->Layout();
+}
+
 bool Plater::can_delete() const { return p->can_delete(); }
 bool Plater::can_delete_all() const { return p->can_delete_all(); }
 bool Plater::can_increase_instances() const { return p->can_increase_instances(); }
diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp
index f9c5a4d7f..ad5a45adb 100644
--- a/src/slic3r/GUI/Plater.hpp
+++ b/src/slic3r/GUI/Plater.hpp
@@ -14,6 +14,7 @@
 #include "GLTexture.hpp"
 
 class wxButton;
+class ScalableButton;
 class wxBoxSizer;
 class wxGLCanvas;
 class wxScrolledWindow;
@@ -46,7 +47,7 @@ public:
     PresetComboBox(wxWindow *parent, Preset::Type preset_type);
     ~PresetComboBox();
 
-    wxButton* edit_btn { nullptr };
+    ScalableButton* edit_btn { nullptr };
 
 	enum LabelItemType {
 		LABEL_ITEM_MARKER = 0x4d,
@@ -56,14 +57,18 @@ public:
     void set_label_marker(int item, LabelItemType label_item_type = LABEL_ITEM_MARKER);
     void set_extruder_idx(const int extr_idx)   { extruder_idx = extr_idx; }
     int  get_extruder_idx() const               { return extruder_idx; }
+    int  em_unit() const                        { return m_em_unit; }
     void check_selection();
 
+    void msw_rescale();
+
 private:
     typedef std::size_t Marker;
 
     Preset::Type preset_type;
     int last_selected;
     int extruder_idx = -1;
+    int m_em_unit;
 };
 
 class Sidebar : public wxPanel
@@ -79,9 +84,11 @@ public:
 
     void init_filament_combo(PresetComboBox **combo, const int extr_idx);
     void remove_unused_filament_combos(const int current_extruder_count);
+    void update_all_preset_comboboxes();
     void update_presets(Slic3r::Preset::Type preset_type);
     void update_mode_sizer() const;
     void update_reslice_btn_tooltip() const;
+    void msw_rescale();
 
     ObjectManipulation*     obj_manipul();
     ObjectList*             obj_list();
@@ -199,6 +206,8 @@ public:
     bool can_copy() const;
     bool can_paste() const;
 
+    void msw_rescale();
+
 private:
     struct priv;
     std::unique_ptr<priv> p;
diff --git a/src/slic3r/GUI/Preferences.cpp b/src/slic3r/GUI/Preferences.cpp
index 8bc747db5..b6a340d08 100644
--- a/src/slic3r/GUI/Preferences.cpp
+++ b/src/slic3r/GUI/Preferences.cpp
@@ -7,7 +7,9 @@ namespace Slic3r {
 namespace GUI {
 
 PreferencesDialog::PreferencesDialog(wxWindow* parent) : 
-	wxDialog(parent, wxID_ANY, _(L("Preferences")), wxDefaultPosition, wxDefaultSize) {
+    DPIDialog(parent, wxID_ANY, _(L("Preferences")), wxDefaultPosition, 
+              wxDefaultSize, wxDEFAULT_DIALOG_STYLE)
+{
 	build();
 }
 
@@ -15,7 +17,7 @@ void PreferencesDialog::build()
 {
 	auto app_config = get_app_config();
 	m_optgroup = std::make_shared<ConfigOptionsGroup>(this, _(L("General")));
-    m_optgroup->label_width = 40 * wxGetApp().em_unit(); //400;
+    m_optgroup->label_width = 40;
 	m_optgroup->m_on_change = [this](t_config_option_key opt_key, boost::any value){
 		m_values[opt_key] = boost::any_cast<bool>(value) ? "1" : "0";
 	};
@@ -110,6 +112,8 @@ void PreferencesDialog::build()
 	auto sizer = new wxBoxSizer(wxVERTICAL);
 	sizer->Add(m_optgroup->sizer, 0, wxEXPAND | wxBOTTOM | wxLEFT | wxRIGHT, 10);
 
+    SetFont(wxGetApp().normal_font());
+
 	auto buttons = CreateStdDialogButtonSizer(wxOK | wxCANCEL);
 	wxButton* btn = static_cast<wxButton*>(FindWindowById(wxID_OK, this));
 	btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) { accept(); });
@@ -123,7 +127,7 @@ void PreferencesDialog::accept()
 {
 	if (m_values.find("no_defaults")       != m_values.end() ||
 		m_values.find("use_legacy_opengl") != m_values.end()) {
-		warning_catcher(this, _(L("You need to restart Slic3r to make the changes effective.")));
+        warning_catcher(this, wxString::Format(_(L("You need to restart %s to make the changes effective.")), SLIC3R_APP_NAME));
 	}
 
 	auto app_config = get_app_config();
@@ -138,5 +142,21 @@ void PreferencesDialog::accept()
     wxGetApp().update_ui_from_settings();
 }
 
+void PreferencesDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+    m_optgroup->msw_rescale();
+
+    const int em = em_unit();
+
+    msw_buttons_rescale(this, em, { wxID_OK, wxID_CANCEL });
+
+    const wxSize& size = wxSize(47 * em, 28 * em);
+
+    SetMinSize(size);
+    Fit();
+
+    Refresh();
+}
+
 } // GUI
 } // Slic3r
\ No newline at end of file
diff --git a/src/slic3r/GUI/Preferences.hpp b/src/slic3r/GUI/Preferences.hpp
index 363daebbc..096a2c906 100644
--- a/src/slic3r/GUI/Preferences.hpp
+++ b/src/slic3r/GUI/Preferences.hpp
@@ -2,6 +2,7 @@
 #define slic3r_Preferences_hpp_
 
 #include "GUI.hpp"
+#include "GUI_Utils.hpp"
 
 #include <wx/dialog.h>
 #include <map>
@@ -11,7 +12,7 @@ namespace GUI {
 
 class ConfigOptionsGroup;
 
-class PreferencesDialog : public wxDialog
+class PreferencesDialog : public DPIDialog
 {
 	std::map<std::string, std::string>	m_values;
 	std::shared_ptr<ConfigOptionsGroup>	m_optgroup;
@@ -21,6 +22,9 @@ public:
 
 	void	build();
 	void	accept();
+
+protected:
+    void on_dpi_changed(const wxRect &suggested_rect) override;
 };
 
 } // GUI
diff --git a/src/slic3r/GUI/Preset.cpp b/src/slic3r/GUI/Preset.cpp
index bed960a62..9875586ed 100644
--- a/src/slic3r/GUI/Preset.cpp
+++ b/src/slic3r/GUI/Preset.cpp
@@ -914,6 +914,16 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui)
 	// and draw a red flag in front of the selected preset.
 	bool wide_icons = ! selected_preset.is_compatible && m_bitmap_incompatible != nullptr;
 
+    /* It's supposed that standard size of an icon is 16px*16px for 100% scaled display.
+    * So set sizes for solid_colored icons used for filament preset
+    * and scale them in respect to em_unit value
+    */
+    const float scale_f = ui->em_unit() * 0.1f;
+    const int icon_height           = 16 * scale_f + 0.5f;
+    const int icon_width            = 16 * scale_f + 0.5f;
+    const int thin_space_icon_width = 4 * scale_f + 0.5f;
+    const int wide_space_icon_width = 6 * scale_f + 0.5f;
+
 	std::map<wxString, wxBitmap*> nonsys_presets;
 	wxString selected = "";
 	if (!this->m_presets.front().is_visible)
@@ -934,13 +944,13 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui)
 			std::vector<wxBitmap> bmps;
 			if (wide_icons)
 				// Paint a red flag for incompatible presets.
-				bmps.emplace_back(preset.is_compatible ? m_bitmap_cache->mkclear(16, 16) : *m_bitmap_incompatible);
+				bmps.emplace_back(preset.is_compatible ? m_bitmap_cache->mkclear(icon_width, icon_height) : *m_bitmap_incompatible);
 			// Paint the color bars.
-			bmps.emplace_back(m_bitmap_cache->mkclear(4, 16));
+			bmps.emplace_back(m_bitmap_cache->mkclear(thin_space_icon_width, icon_height));
 			bmps.emplace_back(*m_bitmap_main_frame);
 			// Paint a lock at the system presets.
- 			bmps.emplace_back(m_bitmap_cache->mkclear(6, 16));
-			bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmap_lock : m_bitmap_cache->mkclear(16, 16));
+			bmps.emplace_back(m_bitmap_cache->mkclear(wide_space_icon_width, icon_height));
+			bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmap_lock : m_bitmap_cache->mkclear(icon_width, icon_height));
 			bmp = m_bitmap_cache->insert(bitmap_key, bmps);
 		}
 
@@ -981,12 +991,12 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui)
 			std::vector<wxBitmap> bmps;
 			if (wide_icons)
 				// Paint a red flag for incompatible presets.
-				bmps.emplace_back(m_bitmap_cache->mkclear(16, 16));
+				bmps.emplace_back(m_bitmap_cache->mkclear(icon_width, icon_height));
 			// Paint the color bars.
-			bmps.emplace_back(m_bitmap_cache->mkclear(4, 16));
+			bmps.emplace_back(m_bitmap_cache->mkclear(thin_space_icon_width, icon_height));
 			bmps.emplace_back(*m_bitmap_main_frame);
 			// Paint a lock at the system presets.
-			bmps.emplace_back(m_bitmap_cache->mkclear(6, 16));
+			bmps.emplace_back(m_bitmap_cache->mkclear(wide_space_icon_width, icon_height));
 			bmps.emplace_back(m_bitmap_add ? *m_bitmap_add : wxNullBitmap);
 			bmp = m_bitmap_cache->insert(bitmap_key, bmps);
 		}
@@ -996,10 +1006,14 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui)
 	ui->SetSelection(selected_preset_item);
 	ui->SetToolTip(ui->GetString(selected_preset_item));
     ui->check_selection();
-	ui->Thaw();
+    ui->Thaw();
+
+    // Update control min size after rescale (changed Display DPI under MSW)
+    if (ui->GetMinWidth() != 20 * ui->em_unit())
+        ui->SetMinSize(wxSize(20 * ui->em_unit(), ui->GetSize().GetHeight()));
 }
 
-size_t PresetCollection::update_tab_ui(wxBitmapComboBox *ui, bool show_incompatible)
+size_t PresetCollection::update_tab_ui(wxBitmapComboBox *ui, bool show_incompatible, const int em/* = 10*/)
 {
     if (ui == nullptr)
         return 0;
@@ -1007,6 +1021,14 @@ size_t PresetCollection::update_tab_ui(wxBitmapComboBox *ui, bool show_incompati
     ui->Clear();
 	size_t selected_preset_item = 0;
 
+    /* It's supposed that standard size of an icon is 16px*16px for 100% scaled display.
+    * So set sizes for solid_colored(empty) icons used for preset
+    * and scale them in respect to em_unit value
+    */
+    const float scale_f = em * 0.1f;
+    const int icon_height = 16 * scale_f + 0.5f;
+    const int icon_width  = 16 * scale_f + 0.5f;
+
 	std::map<wxString, wxBitmap*> nonsys_presets;
 	wxString selected = "";
 	if (!this->m_presets.front().is_visible)
@@ -1025,7 +1047,7 @@ size_t PresetCollection::update_tab_ui(wxBitmapComboBox *ui, bool show_incompati
 			const wxBitmap* tmp_bmp = preset.is_compatible ? m_bitmap_compatible : m_bitmap_incompatible;
 			bmps.emplace_back((tmp_bmp == 0) ? (m_bitmap_main_frame ? *m_bitmap_main_frame : wxNullBitmap) : *tmp_bmp);
 			// Paint a lock at the system presets.
-			bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmap_lock : m_bitmap_cache->mkclear(16, 16));
+			bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmap_lock : m_bitmap_cache->mkclear(icon_width, icon_height));
 			bmp = m_bitmap_cache->insert(bitmap_key, bmps);
 		}
 
@@ -1292,6 +1314,11 @@ std::string PresetCollection::path_from_name(const std::string &new_name) const
     return (boost::filesystem::path(m_dir_path) / file_name).make_preferred().string();
 }
 
+void PresetCollection::clear_bitmap_cache()
+{
+    m_bitmap_cache->clear();
+}
+
 wxString PresetCollection::separator(const std::string &label)
 {
 	return wxString::FromUTF8(PresetCollection::separator_head()) + _(label) + wxString::FromUTF8(PresetCollection::separator_tail());
diff --git a/src/slic3r/GUI/Preset.hpp b/src/slic3r/GUI/Preset.hpp
index 41c9ff72b..051a55f66 100644
--- a/src/slic3r/GUI/Preset.hpp
+++ b/src/slic3r/GUI/Preset.hpp
@@ -394,7 +394,7 @@ public:
     // Update the choice UI from the list of presets.
     // If show_incompatible, all presets are shown, otherwise only the compatible presets are shown.
     // If an incompatible preset is selected, it is shown as well.
-    size_t          update_tab_ui(wxBitmapComboBox *ui, bool show_incompatible);
+    size_t          update_tab_ui(wxBitmapComboBox *ui, bool show_incompatible, const int em = 10);
     // Update the choice UI from the list of presets.
     // Only the compatible presets are shown.
     // If an incompatible preset is selected, it is shown as well.
@@ -412,6 +412,8 @@ public:
     // Generate a file path from a profile name. Add the ".ini" suffix if it is missing.
     std::string     path_from_name(const std::string &new_name) const;
 
+    void            clear_bitmap_cache();
+
 #ifdef __linux__
 	static const char* separator_head() { return "------- "; }
 	static const char* separator_tail() { return " -------"; }
diff --git a/src/slic3r/GUI/PresetBundle.cpp b/src/slic3r/GUI/PresetBundle.cpp
index bcf76d958..b2fa0a857 100644
--- a/src/slic3r/GUI/PresetBundle.cpp
+++ b/src/slic3r/GUI/PresetBundle.cpp
@@ -1434,6 +1434,14 @@ bool PresetBundle::parse_color(const std::string &scolor, unsigned char *rgb_out
 
 void PresetBundle::load_default_preset_bitmaps(wxWindow *window)
 {
+    // Clear bitmap cache, before load new scaled default preset bitmaps 
+    m_bitmapCache->clear();
+    this->prints.clear_bitmap_cache();
+    this->sla_prints.clear_bitmap_cache();
+    this->filaments.clear_bitmap_cache();
+    this->sla_materials.clear_bitmap_cache();
+    this->printers.clear_bitmap_cache();
+
     this->prints.load_bitmap_default(window, "cog");
     this->sla_prints.load_bitmap_default(window, "cog");
     this->filaments.load_bitmap_default(window, "spool.png");
@@ -1468,6 +1476,18 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, GUI::Pr
 	wxString selected_str = "";
 	if (!this->filaments().front().is_visible)
         ui->set_label_marker(ui->Append(PresetCollection::separator(L("System presets")), wxNullBitmap));
+
+    /* It's supposed that standard size of an icon is 16px*16px for 100% scaled display.
+     * So set sizes for solid_colored icons used for filament preset 
+     * and scale them in respect to em_unit value
+     */
+    const float scale_f = ui->em_unit() * 0.1f;
+    const int icon_height       = 16 * scale_f + 0.5f;
+    const int normal_icon_width = 16 * scale_f + 0.5f;
+    const int space_icon_width  = 2  * scale_f + 0.5f;
+    const int wide_icon_width   = 24 * scale_f + 0.5f;
+    const int thin_icon_width   = 8  * scale_f + 0.5f;
+
 	for (int i = this->filaments().front().is_visible ? 0 : 1; i < int(this->filaments().size()); ++i) {
         const Preset &preset    = this->filaments.preset(i);
         bool          selected  = this->filament_presets[idx_extruder] == preset.name;
@@ -1491,17 +1511,17 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, GUI::Pr
             std::vector<wxBitmap> bmps;
             if (wide_icons)
                 // Paint a red flag for incompatible presets.
-                bmps.emplace_back(preset.is_compatible ? m_bitmapCache->mkclear(16, 16) : *m_bitmapIncompatible);
+                bmps.emplace_back(preset.is_compatible ? m_bitmapCache->mkclear(normal_icon_width, icon_height) : *m_bitmapIncompatible);
             // Paint the color bars.
             parse_color(filament_rgb, rgb);
-            bmps.emplace_back(m_bitmapCache->mksolid(single_bar ? 24 : 16, 16, rgb));
+            bmps.emplace_back(m_bitmapCache->mksolid(single_bar ? wide_icon_width : normal_icon_width, icon_height, rgb));
             if (! single_bar) {
                 parse_color(extruder_rgb, rgb);
-                bmps.emplace_back(m_bitmapCache->mksolid(8,  16, rgb));
+                bmps.emplace_back(m_bitmapCache->mksolid(thin_icon_width, icon_height, rgb));
             }
             // Paint a lock at the system presets.
-            bmps.emplace_back(m_bitmapCache->mkclear(2, 16));
-			bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmapLock : m_bitmapCache->mkclear(16, 16));
+            bmps.emplace_back(m_bitmapCache->mkclear(space_icon_width, icon_height));
+            bmps.emplace_back((preset.is_system || preset.is_default) ? *m_bitmapLock : m_bitmapCache->mkclear(normal_icon_width, icon_height));
 //                 (preset.is_dirty ? *m_bitmapLockOpen : *m_bitmapLock) : m_bitmapCache->mkclear(16, 16));
             bitmap = m_bitmapCache->insert(bitmap_key, bmps);
 		}
@@ -1536,6 +1556,10 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, GUI::Pr
 	ui->SetToolTip(ui->GetString(selected_preset_item));
     ui->check_selection();
     ui->Thaw();
+
+    // Update control min size after rescale (changed Display DPI under MSW)
+    if (ui->GetMinWidth() != 20 * ui->em_unit())
+        ui->SetMinSize(wxSize(20 * ui->em_unit(), ui->GetSize().GetHeight()));
 }
 
 void PresetBundle::set_default_suppressed(bool default_suppressed)
diff --git a/src/slic3r/GUI/PrintHostDialogs.cpp b/src/slic3r/GUI/PrintHostDialogs.cpp
index 76185b1ba..2b6e4f2a2 100644
--- a/src/slic3r/GUI/PrintHostDialogs.cpp
+++ b/src/slic3r/GUI/PrintHostDialogs.cpp
@@ -19,6 +19,7 @@
 #include "MsgDialog.hpp"
 #include "I18N.hpp"
 #include "../Utils/PrintHost.hpp"
+#include "wxExtensions.hpp"
 
 namespace fs = boost::filesystem;
 
@@ -131,13 +132,11 @@ wxEvent *PrintHostQueueDialog::Event::Clone() const
 }
 
 PrintHostQueueDialog::PrintHostQueueDialog(wxWindow *parent)
-    : wxDialog(parent, wxID_ANY, _(L("Print host upload queue")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
+    : DPIDialog(parent, wxID_ANY, _(L("Print host upload queue")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
     , on_progress_evt(this, EVT_PRINTHOST_PROGRESS, &PrintHostQueueDialog::on_progress, this)
     , on_error_evt(this, EVT_PRINTHOST_ERROR, &PrintHostQueueDialog::on_error, this)
     , on_cancel_evt(this, EVT_PRINTHOST_CANCEL, &PrintHostQueueDialog::on_cancel, this)
 {
-    enum { HEIGHT = 60, WIDTH = 30, SPACING = 5 };
-
     const auto em = GetTextExtent("m").x;
 
     SetSize(wxSize(HEIGHT * em, WIDTH * em));
@@ -202,6 +201,18 @@ void PrintHostQueueDialog::append_job(const PrintHostJob &job)
     job_list->AppendItem(fields, static_cast<wxUIntPtr>(ST_NEW));
 }
 
+void PrintHostQueueDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+    const int& em = em_unit();
+
+    msw_buttons_rescale(this, em, { wxID_DELETE, wxID_CANCEL, btn_error->GetId() });
+
+    SetMinSize(wxSize(HEIGHT * em, WIDTH * em));
+
+    Fit();
+    Refresh();
+}
+
 PrintHostQueueDialog::JobState PrintHostQueueDialog::get_state(int idx)
 {
     wxCHECK_MSG(idx >= 0 && idx < job_list->GetItemCount(), ST_ERROR, "Out of bounds access to job list");
diff --git a/src/slic3r/GUI/PrintHostDialogs.hpp b/src/slic3r/GUI/PrintHostDialogs.hpp
index 105899cf0..427c4f6bf 100644
--- a/src/slic3r/GUI/PrintHostDialogs.hpp
+++ b/src/slic3r/GUI/PrintHostDialogs.hpp
@@ -41,7 +41,7 @@ private:
 };
 
 
-class PrintHostQueueDialog : public wxDialog
+class PrintHostQueueDialog : public DPIDialog
 {
 public:
     class Event : public wxEvent
@@ -62,6 +62,10 @@ public:
     PrintHostQueueDialog(wxWindow *parent);
 
     void append_job(const PrintHostJob &job);
+
+protected:
+    void on_dpi_changed(const wxRect &suggested_rect) override;
+
 private:
     enum Column {
         COL_ID,
@@ -81,6 +85,8 @@ private:
         ST_COMPLETED,
     };
 
+    enum { HEIGHT = 60, WIDTH = 30, SPACING = 5 };
+
     wxButton *btn_cancel;
     wxButton *btn_error;
     wxDataViewListCtrl *job_list;
diff --git a/src/slic3r/GUI/RammingChart.cpp b/src/slic3r/GUI/RammingChart.cpp
index 41e5cdfe7..6f71e8616 100644
--- a/src/slic3r/GUI/RammingChart.cpp
+++ b/src/slic3r/GUI/RammingChart.cpp
@@ -141,6 +141,9 @@ void Chart::mouse_double_clicked(wxMouseEvent& event) {
 
 
 void Chart::recalculate_line() {
+    m_line_to_draw.clear();
+    m_total_volume = 0.f;
+
     std::vector<wxPoint> points;
     for (auto& but : m_buttons) {
         points.push_back(wxPoint(math_to_screen(but.get_pos())));
@@ -150,92 +153,88 @@ void Chart::recalculate_line() {
             break;
         }
     }
-    std::sort(points.begin(),points.end(),[](wxPoint& a,wxPoint& b) { return a.x < b.x; });
-    
-    m_line_to_draw.clear();
-    m_total_volume = 0.f;
-   
-   
-    // Cubic spline interpolation: see https://en.wikiversity.org/wiki/Cubic_Spline_Interpolation#Methods
-    const bool boundary_first_derivative = true; // true - first derivative is 0 at the leftmost and rightmost point
-                                                 // false - second ---- || -------
-    const int N = points.size()-1; // last point can be accessed as N, we have N+1 total points
-    std::vector<float> diag(N+1);
-    std::vector<float> mu(N+1);
-    std::vector<float> lambda(N+1);
-    std::vector<float> h(N+1);
-    std::vector<float> rhs(N+1);
-    
-    // let's fill in inner equations
-    for (int i=1;i<=N;++i) h[i] = points[i].x-points[i-1].x;
-    std::fill(diag.begin(),diag.end(),2.f);
-    for (int i=1;i<=N-1;++i) {
-        mu[i] = h[i]/(h[i]+h[i+1]);
-        lambda[i] = 1.f - mu[i];
-        rhs[i] = 6 * ( float(points[i+1].y-points[i].y  )/(h[i+1]*(points[i+1].x-points[i-1].x)) -  
-                       float(points[i].y  -points[i-1].y)/(h[i]  *(points[i+1].x-points[i-1].x))   );                       
-    }
-    
-    // now fill in the first and last equations, according to boundary conditions:
-    if (boundary_first_derivative) {
-        const float endpoints_derivative = 0;
-        lambda[0] = 1;
-        mu[N]     = 1;
-        rhs[0] = (6.f/h[1]) * (float(points[0].y-points[1].y)/(points[0].x-points[1].x) - endpoints_derivative);
-        rhs[N] = (6.f/h[N]) * (endpoints_derivative - float(points[N-1].y-points[N].y)/(points[N-1].x-points[N].x));        
-    }
-    else {
-        lambda[0] = 0;
-        mu[N]     = 0;
-        rhs[0]    = 0;
-        rhs[N]    = 0;
-    }
+
+    // The calculation wouldn't work in case the ramming is to be turned off completely.
+    if (points.size()>1) {
+        std::sort(points.begin(),points.end(),[](wxPoint& a,wxPoint& b) { return a.x < b.x; });
+
+        // Cubic spline interpolation: see https://en.wikiversity.org/wiki/Cubic_Spline_Interpolation#Methods
+        const bool boundary_first_derivative = true; // true - first derivative is 0 at the leftmost and rightmost point
+                                                     // false - second ---- || -------
+        const int N = points.size()-1; // last point can be accessed as N, we have N+1 total points
+        std::vector<float> diag(N+1);
+        std::vector<float> mu(N+1);
+        std::vector<float> lambda(N+1);
+        std::vector<float> h(N+1);
+        std::vector<float> rhs(N+1);
         
-    // the trilinear system is ready to be solved:
-    for (int i=1;i<=N;++i) {
-        float multiple = mu[i]/diag[i-1];    // let's subtract proper multiple of above equation
-        diag[i]-= multiple * lambda[i-1];
-        rhs[i] -= multiple * rhs[i-1];        
-    }
-    // now the back substitution (vector mu contains invalid values from now on):
-    rhs[N] = rhs[N]/diag[N];
-    for (int i=N-1;i>=0;--i)
-        rhs[i] = (rhs[i]-lambda[i]*rhs[i+1])/diag[i];
-    
-    
-    
-    
-    unsigned int i=1;
-    float y=0.f;
-    for (int x=m_rect.GetLeft(); x<=m_rect.GetRight() ; ++x) {        
-        if (splines) {
-            if (i<points.size()-1 && points[i].x < x ) {
-                ++i; 
+        // let's fill in inner equations
+        for (int i=1;i<=N;++i) h[i] = points[i].x-points[i-1].x;
+        std::fill(diag.begin(),diag.end(),2.f);
+        for (int i=1;i<=N-1;++i) {
+            mu[i] = h[i]/(h[i]+h[i+1]);
+            lambda[i] = 1.f - mu[i];
+            rhs[i] = 6 * ( float(points[i+1].y-points[i].y  )/(h[i+1]*(points[i+1].x-points[i-1].x)) -
+                           float(points[i].y  -points[i-1].y)/(h[i]  *(points[i+1].x-points[i-1].x))   );
+        }
+
+        // now fill in the first and last equations, according to boundary conditions:
+        if (boundary_first_derivative) {
+            const float endpoints_derivative = 0;
+            lambda[0] = 1;
+            mu[N]     = 1;
+            rhs[0] = (6.f/h[1]) * (float(points[0].y-points[1].y)/(points[0].x-points[1].x) - endpoints_derivative);
+            rhs[N] = (6.f/h[N]) * (endpoints_derivative - float(points[N-1].y-points[N].y)/(points[N-1].x-points[N].x));
+        }
+        else {
+            lambda[0] = 0;
+            mu[N]     = 0;
+            rhs[0]    = 0;
+            rhs[N]    = 0;
+        }
+
+        // the trilinear system is ready to be solved:
+        for (int i=1;i<=N;++i) {
+            float multiple = mu[i]/diag[i-1];    // let's subtract proper multiple of above equation
+            diag[i]-= multiple * lambda[i-1];
+            rhs[i] -= multiple * rhs[i-1];
+        }
+        // now the back substitution (vector mu contains invalid values from now on):
+        rhs[N] = rhs[N]/diag[N];
+        for (int i=N-1;i>=0;--i)
+            rhs[i] = (rhs[i]-lambda[i]*rhs[i+1])/diag[i];
+
+        unsigned int i=1;
+        float y=0.f;
+        for (int x=m_rect.GetLeft(); x<=m_rect.GetRight() ; ++x) {
+            if (splines) {
+                if (i<points.size()-1 && points[i].x < x ) {
+                    ++i;
+                }
+                if (points[0].x > x)
+                    y = points[0].y;
+                else
+                    if (points[N].x < x)
+                        y = points[N].y;
+                    else
+                        y = (rhs[i-1]*pow(points[i].x-x,3)+rhs[i]*pow(x-points[i-1].x,3)) / (6*h[i]) +
+                            (points[i-1].y-rhs[i-1]*h[i]*h[i]/6.f) * (points[i].x-x)/h[i] +
+                            (points[i].y  -rhs[i]  *h[i]*h[i]/6.f) * (x-points[i-1].x)/h[i];
+                m_line_to_draw.push_back(y);
             }
-            if (points[0].x > x)
-                y = points[0].y;
-            else
-                if (points[N].x < x)
-                    y = points[N].y;
-                else 
-                    y = (rhs[i-1]*pow(points[i].x-x,3)+rhs[i]*pow(x-points[i-1].x,3)) / (6*h[i]) +
-                        (points[i-1].y-rhs[i-1]*h[i]*h[i]/6.f) * (points[i].x-x)/h[i] +
-                        (points[i].y  -rhs[i]  *h[i]*h[i]/6.f) * (x-points[i-1].x)/h[i];
-            m_line_to_draw.push_back(y);
+            else {
+                float x_math = screen_to_math(wxPoint(x,0)).m_x;
+                if (i+2<=points.size() && m_buttons[i+1].get_pos().m_x-0.125 < x_math)
+                    ++i;
+                m_line_to_draw.push_back(math_to_screen(wxPoint2DDouble(x_math,m_buttons[i].get_pos().m_y)).y);
+            }
+
+            m_line_to_draw.back() = std::max(m_line_to_draw.back(), m_rect.GetTop()-1);
+            m_line_to_draw.back() = std::min(m_line_to_draw.back(), m_rect.GetBottom()-1);
+            m_total_volume += (m_rect.GetBottom() - m_line_to_draw.back()) * (visible_area.m_width / m_rect.GetWidth()) * (visible_area.m_height / m_rect.GetHeight());
         }
-        else {            
-            float x_math = screen_to_math(wxPoint(x,0)).m_x;
-            if (i+2<=points.size() && m_buttons[i+1].get_pos().m_x-0.125 < x_math)
-                ++i;
-            m_line_to_draw.push_back(math_to_screen(wxPoint2DDouble(x_math,m_buttons[i].get_pos().m_y)).y);
-        }
-            
-                    
-        m_line_to_draw.back() = std::max(m_line_to_draw.back(), m_rect.GetTop()-1);
-        m_line_to_draw.back() = std::min(m_line_to_draw.back(), m_rect.GetBottom()-1);
-        m_total_volume += (m_rect.GetBottom() - m_line_to_draw.back()) * (visible_area.m_width / m_rect.GetWidth()) * (visible_area.m_height / m_rect.GetHeight());
     }
-    
+
     wxPostEvent(this->GetParent(), wxCommandEvent(EVT_WIPE_TOWER_CHART_CHANGED));
     Refresh();
 }
diff --git a/src/slic3r/GUI/SysInfoDialog.cpp b/src/slic3r/GUI/SysInfoDialog.cpp
index 2746c643e..162a36c75 100644
--- a/src/slic3r/GUI/SysInfoDialog.cpp
+++ b/src/slic3r/GUI/SysInfoDialog.cpp
@@ -41,10 +41,12 @@ std::string get_main_info(bool format_as_html)
 }
 
 SysInfoDialog::SysInfoDialog()
-    : wxDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("System Information")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
+    : DPIDialog(NULL, wxID_ANY, wxString(SLIC3R_APP_NAME) + " - " + _(L("System Information")), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER)
 {
 	wxColour bgr_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
 	SetBackgroundColour(bgr_clr);
+    SetFont(wxGetApp().normal_font());
+
     wxBoxSizer* hsizer = new wxBoxSizer(wxHORIZONTAL);
     hsizer->SetMinSize(wxSize(50 * wxGetApp().em_unit(), -1));
 
@@ -52,8 +54,9 @@ SysInfoDialog::SysInfoDialog()
 	main_sizer->Add(hsizer, 1, wxEXPAND | wxALL, 10);
 
     // logo
-    auto *logo = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap(this, "Slic3r_192px.png", 192));
-	hsizer->Add(logo, 0, wxALIGN_CENTER_VERTICAL);
+    m_logo_bmp = ScalableBitmap(this, "Slic3r_192px.png", 192);
+    m_logo = new wxStaticBitmap(this, wxID_ANY, m_logo_bmp.bmp());
+	hsizer->Add(m_logo, 0, wxALIGN_CENTER_VERTICAL);
     
     wxBoxSizer* vsizer = new wxBoxSizer(wxVERTICAL);
     hsizer->Add(vsizer, 1, wxEXPAND|wxLEFT, 20);
@@ -61,8 +64,7 @@ SysInfoDialog::SysInfoDialog()
     // title
     {
         wxStaticText* title = new wxStaticText(this, wxID_ANY, SLIC3R_APP_NAME, wxDefaultPosition, wxDefaultSize);
-        wxFont title_font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
-        title_font.SetWeight(wxFONTWEIGHT_BOLD);
+        wxFont title_font = wxGetApp().bold_font();
         title_font.SetFamily(wxFONTFAMILY_ROMAN);
         title_font.SetPointSize(22);
         title->SetFont(title_font);
@@ -70,7 +72,7 @@ SysInfoDialog::SysInfoDialog()
     }
 
     // main_info_text
-    wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT);
+    wxFont font = wxGetApp().normal_font();
     const auto text_clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
     auto text_clr_str = wxString::Format(wxT("#%02X%02X%02X"), text_clr.Red(), text_clr.Green(), text_clr.Blue());
     auto bgr_clr_str = wxString::Format(wxT("#%02X%02X%02X"), bgr_clr.Red(), bgr_clr.Green(), bgr_clr.Blue());
@@ -78,10 +80,10 @@ SysInfoDialog::SysInfoDialog()
     const int fs = font.GetPointSize() - 1;
     int size[] = { static_cast<int>(fs*1.5), static_cast<int>(fs*1.4), static_cast<int>(fs*1.3), fs, fs, fs, fs };
 
-    wxHtmlWindow* html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_NEVER);
+    m_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_NEVER);
     {
-        html->SetFonts(font.GetFaceName(), font.GetFaceName(), size);
-        html->SetBorders(2);
+        m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size);
+        m_html->SetBorders(2);
 		const auto text = wxString::Format(
             "<html>"
             "<body bgcolor= %s link= %s>"
@@ -91,16 +93,16 @@ SysInfoDialog::SysInfoDialog()
             "</body>"
             "</html>", bgr_clr_str, text_clr_str, text_clr_str,
             get_main_info(true));
-        html->SetPage(text);
-        vsizer->Add(html, 1, wxEXPAND | wxBOTTOM, wxGetApp().em_unit());
+        m_html->SetPage(text);
+        vsizer->Add(m_html, 1, wxEXPAND | wxBOTTOM, wxGetApp().em_unit());
     }
 
     // opengl_info
-    wxHtmlWindow* opengl_info_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO);
+    m_opengl_info_html = new wxHtmlWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHW_SCROLLBAR_AUTO);
     {
-        opengl_info_html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit()));
-        opengl_info_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size);
-        opengl_info_html->SetBorders(10);
+        m_opengl_info_html->SetMinSize(wxSize(-1, 16 * wxGetApp().em_unit()));
+        m_opengl_info_html->SetFonts(font.GetFaceName(), font.GetFaceName(), size);
+        m_opengl_info_html->SetBorders(10);
         const auto text = wxString::Format(
             "<html>"
             "<body bgcolor= %s link= %s>"
@@ -110,14 +112,15 @@ SysInfoDialog::SysInfoDialog()
             "</body>"
             "</html>", bgr_clr_str, text_clr_str, text_clr_str,
             _3DScene::get_gl_info(true, true));
-        opengl_info_html->SetPage(text);
-        main_sizer->Add(opengl_info_html, 1, wxEXPAND | wxBOTTOM, 15);
+        m_opengl_info_html->SetPage(text);
+        main_sizer->Add(m_opengl_info_html, 1, wxEXPAND | wxBOTTOM, 15);
     }
     
     wxStdDialogButtonSizer* buttons = this->CreateStdDialogButtonSizer(wxOK);
-    auto btn_copy_to_clipboard = new wxButton(this, wxID_ANY, "Copy to Clipboard", wxDefaultPosition, wxDefaultSize);
-    buttons->Insert(0, btn_copy_to_clipboard, 0, wxLEFT, 5);
-    btn_copy_to_clipboard->Bind(wxEVT_BUTTON, &SysInfoDialog::onCopyToClipboard, this);
+    m_btn_copy_to_clipboard = new wxButton(this, wxID_ANY, "Copy to Clipboard", wxDefaultPosition, wxDefaultSize);
+
+    buttons->Insert(0, m_btn_copy_to_clipboard, 0, wxLEFT, 5);
+    m_btn_copy_to_clipboard->Bind(wxEVT_BUTTON, &SysInfoDialog::onCopyToClipboard, this);
 
     this->SetEscapeId(wxID_OK);
     this->Bind(wxEVT_BUTTON, &SysInfoDialog::onCloseDialog, this, wxID_OK);
@@ -130,6 +133,34 @@ SysInfoDialog::SysInfoDialog()
 	main_sizer->SetSizeHints(this);
 }
 
+void SysInfoDialog::on_dpi_changed(const wxRect &suggested_rect)
+{
+    m_logo_bmp.msw_rescale();
+    m_logo->SetBitmap(m_logo_bmp.bmp());
+
+    wxFont font = GetFont();
+    const int fs = font.GetPointSize() - 1;
+    int font_size[] = { static_cast<int>(fs*1.5), static_cast<int>(fs*1.4), static_cast<int>(fs*1.3), fs, fs, fs, fs };
+
+    m_html->SetFonts(font.GetFaceName(), font.GetFaceName(), font_size);
+    m_html->Refresh();
+
+    const int& em = em_unit();
+
+    msw_buttons_rescale(this, em, { wxID_OK, m_btn_copy_to_clipboard->GetId() });
+
+    m_opengl_info_html->SetMinSize(wxSize(-1, 16 * em));
+    m_opengl_info_html->SetFonts(font.GetFaceName(), font.GetFaceName(), font_size);
+    m_opengl_info_html->Refresh();
+
+    const wxSize& size = wxSize(65 * em, 55 * em);
+
+    SetMinSize(size);
+    Fit();
+
+    Refresh();
+}
+
 void SysInfoDialog::onCopyToClipboard(wxEvent &)
 {
     wxTheClipboard->Open();
diff --git a/src/slic3r/GUI/SysInfoDialog.hpp b/src/slic3r/GUI/SysInfoDialog.hpp
index ee1b85ce6..3b1459648 100644
--- a/src/slic3r/GUI/SysInfoDialog.hpp
+++ b/src/slic3r/GUI/SysInfoDialog.hpp
@@ -4,14 +4,26 @@
 #include <wx/wx.h>
 #include <wx/html/htmlwin.h>
 
+#include "GUI_Utils.hpp"
+#include "wxExtensions.hpp"
+
 namespace Slic3r { 
 namespace GUI {
 
-class SysInfoDialog : public wxDialog
+class SysInfoDialog : public DPIDialog
 {
-    wxString text_info {wxEmptyString};
+    ScalableBitmap  m_logo_bmp;
+    wxStaticBitmap* m_logo;
+    wxHtmlWindow*   m_opengl_info_html;
+    wxHtmlWindow*   m_html;
+
+    wxButton*       m_btn_copy_to_clipboard;
+
 public:
     SysInfoDialog();
+
+protected:
+    void on_dpi_changed(const wxRect &suggested_rect) override;
     
 private:
     void onCopyToClipboard(wxEvent &);
diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp
index a697c7a71..fb8147ad2 100644
--- a/src/slic3r/GUI/Tab.cpp
+++ b/src/slic3r/GUI/Tab.cpp
@@ -110,37 +110,28 @@ void Tab::create_preset_tab()
 #endif //__WXOSX__
 
 	// preset chooser
-    m_presets_choice = new wxBitmapComboBox(panel, wxID_ANY, "", wxDefaultPosition, wxSize(25 * m_em_unit, -1), 0, 0, wxCB_READONLY);
+    m_presets_choice = new wxBitmapComboBox(panel, wxID_ANY, "", wxDefaultPosition, wxSize(35 * m_em_unit, -1), 0, 0, wxCB_READONLY);
 
 	auto color = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
 
 	//buttons
-	wxBitmap bmpMenu;
-    bmpMenu = create_scaled_bitmap(this, "save");
-	m_btn_save_preset = new wxBitmapButton(panel, wxID_ANY, bmpMenu, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
-	if (wxMSW) m_btn_save_preset->SetBackgroundColour(color);
-    bmpMenu = create_scaled_bitmap(this, "cross"/*"delete.png"*/);
-	m_btn_delete_preset = new wxBitmapButton(panel, wxID_ANY, bmpMenu, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
-	if (wxMSW) m_btn_delete_preset->SetBackgroundColour(color);
+    m_scaled_buttons.reserve(6);
+    m_scaled_buttons.reserve(2);
+
+    add_scaled_button(panel, &m_btn_save_preset, "save");
+    add_scaled_button(panel, &m_btn_delete_preset, "cross");
 
 	m_show_incompatible_presets = false;
-	m_bmp_show_incompatible_presets = create_scaled_bitmap(this, "flag_red");
-	m_bmp_hide_incompatible_presets = create_scaled_bitmap(this, "flag_green");
-	m_btn_hide_incompatible_presets = new wxBitmapButton(panel, wxID_ANY, m_bmp_hide_incompatible_presets, wxDefaultPosition, wxDefaultSize, wxBORDER_NONE);
-	if (wxMSW) m_btn_hide_incompatible_presets->SetBackgroundColour(color);
+	add_scaled_bitmap(this, m_bmp_show_incompatible_presets, "flag_red");
+	add_scaled_bitmap(this, m_bmp_hide_incompatible_presets, "flag_green");
+
+    add_scaled_button(panel, &m_btn_hide_incompatible_presets, m_bmp_hide_incompatible_presets.name());
 
 	m_btn_save_preset->SetToolTip(_(L("Save current ")) + m_title);
 	m_btn_delete_preset->SetToolTip(_(L("Delete this preset")));
 	m_btn_delete_preset->Disable();
 
-	m_undo_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
-	m_undo_to_sys_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
-	m_question_btn = new wxButton(panel, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
-	if (wxMSW) {
-		m_undo_btn->SetBackgroundColour(color);
-		m_undo_to_sys_btn->SetBackgroundColour(color);
-		m_question_btn->SetBackgroundColour(color);
-	}
+    add_scaled_button(panel, &m_question_btn, "question");
 
 	m_question_btn->SetToolTip(_(L("Hover the cursor over buttons to find more information \n"
 								   "or click this button.")));
@@ -148,22 +139,21 @@ void Tab::create_preset_tab()
 	// Determine the theme color of OS (dark or light)
     auto luma = wxGetApp().get_colour_approx_luma(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
 	// Bitmaps to be shown on the "Revert to system" aka "Lock to system" button next to each input field.
-	m_bmp_value_lock  	   = create_scaled_bitmap(this, luma >= 128 ? "lock_closed" : "lock_closed_white");
-	m_bmp_value_unlock     = create_scaled_bitmap(this, "lock_open");
+	add_scaled_bitmap(this, m_bmp_value_lock  , luma >= 128 ? "lock_closed" : "lock_closed_white");
+	add_scaled_bitmap(this, m_bmp_value_unlock, "lock_open");
 	m_bmp_non_system = &m_bmp_white_bullet;
 	// Bitmaps to be shown on the "Undo user changes" button next to each input field.
-	m_bmp_value_revert    = create_scaled_bitmap(this, "undo");
-	m_bmp_white_bullet    = create_scaled_bitmap(this, luma >= 128 ? "dot" : "dot_white"/*"bullet_white.png"*/);
-	m_bmp_question        = create_scaled_bitmap(this, "question");
+	add_scaled_bitmap(this, m_bmp_value_revert, "undo");
+	add_scaled_bitmap(this, m_bmp_white_bullet, luma >= 128 ? "dot" : "dot_white");
 
 	fill_icon_descriptions();
 	set_tooltips_text();
 
-	m_undo_btn->SetBitmap(m_bmp_white_bullet);
+    add_scaled_button(panel, &m_undo_btn,        m_bmp_white_bullet.name());
+    add_scaled_button(panel, &m_undo_to_sys_btn, m_bmp_white_bullet.name());
+
 	m_undo_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_roll_back_value(); }));
-	m_undo_to_sys_btn->SetBitmap(m_bmp_white_bullet);
 	m_undo_to_sys_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent) { on_roll_back_value(true); }));
-	m_question_btn->SetBitmap(m_bmp_question);
 	m_question_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent)
 	{
 		auto dlg = new ButtonsDescription(this, &m_icon_descriptions);
@@ -183,7 +173,7 @@ void Tab::create_preset_tab()
 	m_default_text_clr		= wxGetApp().get_label_clr_default();
 
     // Sizer with buttons for mode changing
-    m_mode_sizer = new PrusaModeSizer(panel);
+    m_mode_sizer = new ModeSizer(panel);
 
     const float scale_factor = wxGetApp().em_unit()*0.1;// GetContentScaleFactor();
 	m_hsizer = new wxBoxSizer(wxHORIZONTAL);
@@ -259,12 +249,36 @@ void Tab::create_preset_tab()
 		toggle_show_hide_incompatible();
 	}));
 
+    // Fill cache for mode bitmaps
+    m_mode_bitmap_cache.reserve(3);
+    m_mode_bitmap_cache.push_back(ScalableBitmap(this, "mode_simple_.png"));
+    m_mode_bitmap_cache.push_back(ScalableBitmap(this, "mode_middle_.png"));
+    m_mode_bitmap_cache.push_back(ScalableBitmap(this, "mode_expert_.png"));
+
 	// Initialize the DynamicPrintConfig by default keys/values.
 	build();
 	rebuild_page_tree();
     m_complited = true;
 }
 
+void Tab::add_scaled_button(wxWindow* parent, 
+                            ScalableButton** btn, 
+                            const std::string& icon_name, 
+                            const wxString& label/* = wxEmptyString*/, 
+                            long style /*= wxBU_EXACTFIT | wxNO_BORDER*/)
+{
+    *btn = new ScalableButton(parent, wxID_ANY, icon_name, label, wxDefaultSize, wxDefaultPosition, style);
+    m_scaled_buttons.push_back(*btn);
+}
+
+void Tab::add_scaled_bitmap(wxWindow* parent, 
+                            ScalableBitmap& bmp, 
+                            const std::string& icon_name)
+{
+    bmp = ScalableBitmap(parent, icon_name);
+    m_scaled_bitmaps.push_back(&bmp);
+}
+
 void Tab::load_initial_data()
 {
 	m_config = &m_presets->get_edited_preset().config;
@@ -281,9 +295,8 @@ Slic3r::GUI::PageShp Tab::add_options_page(const wxString& title, const std::str
 		icon_idx = (m_icon_index.find(icon) == m_icon_index.end()) ? -1 : m_icon_index.at(icon);
 		if (icon_idx == -1) {
 			// Add a new icon to the icon list.
-//             wxIcon img_icon(from_u8(Slic3r::var(icon)), wxBITMAP_TYPE_PNG);
-//             m_icons->Add(img_icon);
-            m_icons->Add(create_scaled_bitmap(this, icon));
+            m_scaled_icons_list.push_back(ScalableBitmap(this, icon));
+            m_icons->Add(m_scaled_icons_list.back().bmp());
             icon_idx = ++m_icon_count;
 			m_icon_index[icon] = icon_idx;
 		}
@@ -294,7 +307,7 @@ Slic3r::GUI::PageShp Tab::add_options_page(const wxString& title, const std::str
 #else
 	auto panel = this;
 #endif
-	PageShp page(new Page(panel, title, icon_idx));
+	PageShp page(new Page(panel, title, icon_idx, m_mode_bitmap_cache));
 //	page->SetBackgroundStyle(wxBG_STYLE_SYSTEM);
 #ifdef __WINDOWS__
 //	page->SetDoubleBuffered(true);
@@ -402,8 +415,8 @@ void Tab::update_changed_ui()
 	{
 		bool is_nonsys_value = false;
 		bool is_modified_value = true;
-		const wxBitmap *sys_icon =	&m_bmp_value_lock;
-		const wxBitmap *icon =		&m_bmp_value_revert;
+		const ScalableBitmap *sys_icon =	&m_bmp_value_lock;
+		const ScalableBitmap *icon =		&m_bmp_value_revert;
 
 		const wxColour *color =		&m_sys_label_clr;
 
@@ -595,8 +608,8 @@ void Tab::update_changed_tree_ui()
 
 void Tab::update_undo_buttons()
 {
-	m_undo_btn->SetBitmap(m_is_modified_values ? m_bmp_value_revert : m_bmp_white_bullet);
-	m_undo_to_sys_btn->SetBitmap(m_is_nonsys_values ? *m_bmp_non_system : m_bmp_value_lock);
+	m_undo_btn->        SetBitmap_(m_is_modified_values ? m_bmp_value_revert: m_bmp_white_bullet);
+	m_undo_to_sys_btn-> SetBitmap_(m_is_nonsys_values   ? *m_bmp_non_system : m_bmp_value_lock);
 
 	m_undo_btn->SetToolTip(m_is_modified_values ? m_ttg_value_revert : m_ttg_white_bullet);
 	m_undo_to_sys_btn->SetToolTip(m_is_nonsys_values ? *m_ttg_non_system : m_ttg_value_lock);
@@ -673,7 +686,7 @@ void Tab::update_dirty()
 
 void Tab::update_tab_ui()
 {
-	m_selected_preset_item = m_presets->update_tab_ui(m_presets_choice, m_show_incompatible_presets);
+	m_selected_preset_item = m_presets->update_tab_ui(m_presets_choice, m_show_incompatible_presets, m_em_unit);
 }
 
 // Load a provied DynamicConfig into the tab, modifying the active preset.
@@ -726,6 +739,42 @@ void Tab::update_visibility()
     update_changed_tree_ui();
 }
 
+void Tab::msw_rescale()
+{
+    m_em_unit = wxGetApp().em_unit();
+
+    m_mode_sizer->msw_rescale();
+
+    m_presets_choice->SetSize(35 * m_em_unit, -1);
+    m_treectrl->SetMinSize(wxSize(20 * m_em_unit, -1));
+
+    update_tab_ui();
+
+    // rescale buttons and cached bitmaps
+    for (const auto btn : m_scaled_buttons)
+        btn->msw_rescale();
+    for (const auto bmp : m_scaled_bitmaps)
+        bmp->msw_rescale();
+    for (ScalableBitmap& bmp : m_mode_bitmap_cache)
+        bmp.msw_rescale();
+
+    // rescale icons for tree_ctrl
+    for (ScalableBitmap& bmp : m_scaled_icons_list)
+        bmp.msw_rescale();
+    // recreate and set new ImageList for tree_ctrl
+    m_icons->RemoveAll();
+    m_icons = new wxImageList(m_scaled_icons_list.front().bmp().GetWidth(), m_scaled_icons_list.front().bmp().GetHeight());
+    for (ScalableBitmap& bmp : m_scaled_icons_list)
+        m_icons->Add(bmp.bmp());
+    m_treectrl->AssignImageList(m_icons);
+
+    // rescale options_groups
+    for (auto page : m_pages)
+        page->msw_rescale();
+
+    Layout();
+}
+
 Field* Tab::get_field(const t_config_option_key& opt_key, int opt_index/* = -1*/) const
 {
 	Field* field = nullptr;
@@ -1121,10 +1170,10 @@ void TabPrint::build()
 		optgroup->append_single_option_line("complete_objects");
 		line = { _(L("Extruder clearance (mm)")), "" };
 		Option option = optgroup->get_option("extruder_clearance_radius");
-		option.opt.width = 60;
+		option.opt.width = 6;
 		line.append_option(option);
 		option = optgroup->get_option("extruder_clearance_height");
-		option.opt.width = 60;
+		option.opt.width = 6;
 		line.append_option(option);
 		optgroup->append_line(line);
 
@@ -1138,14 +1187,14 @@ void TabPrint::build()
 		optgroup = page->new_optgroup(_(L("Post-processing scripts")), 0);	
 		option = optgroup->get_option("post_process");
 		option.opt.full_width = true;
-        option.opt.height = 5 * m_em_unit;//50;
+        option.opt.height = 5;//50;
 		optgroup->append_single_option_line(option);
 
 	page = add_options_page(_(L("Notes")), "note.png");
 		optgroup = page->new_optgroup(_(L("Notes")), 0);						
 		option = optgroup->get_option("notes");
 		option.opt.full_width = true;
-        option.opt.height = 25 * m_em_unit;//250;
+        option.opt.height = 25;//250;
 		optgroup->append_single_option_line(option);
 
 	page = add_options_page(_(L("Dependencies")), "wrench.png");
@@ -1458,7 +1507,7 @@ void TabFilament::build()
 		optgroup->append_single_option_line("bridge_fan_speed");
 		optgroup->append_single_option_line("disable_fan_first_layers");
 
-		optgroup = page->new_optgroup(_(L("Cooling thresholds")), 250);
+		optgroup = page->new_optgroup(_(L("Cooling thresholds")), 25);
 		optgroup->append_single_option_line("fan_below_layer_time");
 		optgroup->append_single_option_line("slowdown_below_layer_time");
 		optgroup->append_single_option_line("min_print_speed");
@@ -1508,8 +1557,8 @@ void TabFilament::build()
 		};
 		optgroup->append_line(line);
 
-        const int gcode_field_height = 15 * m_em_unit; // 150
-        const int notes_field_height = 25 * m_em_unit; // 250
+        const int gcode_field_height = 15; // 150
+        const int notes_field_height = 25; // 250
 
         page = add_options_page(_(L("Custom G-code")), "cog");
 		optgroup = page->new_optgroup(_(L("Start G-code")), 0);
@@ -1606,8 +1655,8 @@ wxSizer* Tab::description_line_widget(wxWindow* parent, ogStaticText* *StaticTex
 {
 	*StaticText = new ogStaticText(parent, "");
 
-	auto font = (new wxSystemSettings)->GetFont(wxSYS_DEFAULT_GUI_FONT);
-	(*StaticText)->SetFont(font);
+//	auto font = (new wxSystemSettings)->GetFont(wxSYS_DEFAULT_GUI_FONT);
+	(*StaticText)->SetFont(wxGetApp().normal_font());
 
 	auto sizer = new wxBoxSizer(wxHORIZONTAL);
 	sizer->Add(*StaticText, 1, wxEXPAND|wxALL, 0);
@@ -1629,10 +1678,10 @@ void TabPrinter::build_printhost(ConfigOptionsGroup *optgroup)
 	}
 
 	auto printhost_browse = [=](wxWindow* parent) {
-        auto btn = m_printhost_browse_btn = new wxButton(parent, wxID_ANY, _(L(" Browse ")) + dots, 
-            wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
+        add_scaled_button(parent, &m_printhost_browse_btn, "browse", _(L(" Browse ")) + dots, wxBU_LEFT | wxBU_EXACTFIT);
+        ScalableButton* btn = m_printhost_browse_btn;
 		btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
-        btn->SetBitmap(create_scaled_bitmap(this, "browse"));
+
 		auto sizer = new wxBoxSizer(wxHORIZONTAL);
 		sizer->Add(btn);
 
@@ -1648,10 +1697,9 @@ void TabPrinter::build_printhost(ConfigOptionsGroup *optgroup)
 	};
 
 	auto print_host_test = [this](wxWindow* parent) {
-		auto btn = m_print_host_test_btn = new wxButton(parent, wxID_ANY, _(L("Test")), 
-			wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
-		btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
-        btn->SetBitmap(create_scaled_bitmap(this, "test"));
+        add_scaled_button(parent, &m_print_host_test_btn, "test", _(L("Test")), wxBU_LEFT | wxBU_EXACTFIT);
+        ScalableButton* btn = m_print_host_test_btn;
+        btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
 		auto sizer = new wxBoxSizer(wxHORIZONTAL);
 		sizer->Add(btn);
 
@@ -1722,9 +1770,9 @@ void TabPrinter::build_printhost(ConfigOptionsGroup *optgroup)
 
 		line.widget = [this, ca_file_hint] (wxWindow* parent) {
 			auto txt = new wxStaticText(parent, wxID_ANY, wxString::Format("%s\n\n\t%s",
-				_(L("HTTPS CA File:\n\
-\tOn this system, Slic3r uses HTTPS certificates from the system Certificate Store or Keychain.\n\
-\tTo use a custom CA file, please import your CA file into Certificate Store / Keychain.")),
+	wxString::Format(_(L("HTTPS CA File:\n\
+    \tOn this system, %s uses HTTPS certificates from the system Certificate Store or Keychain.\n\
+    \tTo use a custom CA file, please import your CA file into Certificate Store / Keychain.")), SLIC3R_APP_NAME),
 				ca_file_hint));
 			txt->SetFont(Slic3r::GUI::wxGetApp().normal_font());
 			auto sizer = new wxBoxSizer(wxHORIZONTAL);
@@ -1755,6 +1803,8 @@ void TabPrinter::build_fff()
 
 	auto   *nozzle_diameter = dynamic_cast<const ConfigOptionFloats*>(m_config->option("nozzle_diameter"));
 	m_initial_extruders_count = m_extruders_count = nozzle_diameter->values.size();
+    wxGetApp().sidebar().update_objects_list_extruder_column(m_initial_extruders_count);
+
 	const Preset* parent_preset = m_presets->get_selected_preset_parent();
 	m_sys_extruders_count = parent_preset == nullptr ? 0 :
 			static_cast<const ConfigOptionFloats*>(parent_preset->config.option("nozzle_diameter"))->values.size();
@@ -1764,9 +1814,9 @@ void TabPrinter::build_fff()
 
         Line line = optgroup->create_single_option_line("bed_shape");//{ _(L("Bed shape")), "" };
 		line.widget = [this](wxWindow* parent) {
-			auto btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
-            btn->SetFont(wxGetApp().small_font());
-            btn->SetBitmap(create_scaled_bitmap(this, "printer_white"));
+            ScalableButton* btn;
+            add_scaled_button(parent, &btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT);
+            btn->SetFont(wxGetApp().normal_font());
 
 			auto sizer = new wxBoxSizer(wxHORIZONTAL);
 			sizer->Add(btn);
@@ -1881,7 +1931,7 @@ void TabPrinter::build_fff()
 						m_use_silent_mode = val;
 					}
 				}
-				build_extruder_pages();
+				build_unregular_pages();
 				update_dirty();
 				on_value_change(opt_key, value);
 			});
@@ -1893,8 +1943,8 @@ void TabPrinter::build_fff()
 		optgroup->append_single_option_line("use_volumetric_e");
 		optgroup->append_single_option_line("variable_layer_height");
 
-    const int gcode_field_height = 15 * m_em_unit; // 150
-    const int notes_field_height = 25 * m_em_unit; // 250
+    const int gcode_field_height = 15; // 150
+    const int notes_field_height = 25; // 250
 	page = add_options_page(_(L("Custom G-code")), "cog");
 		optgroup = page->new_optgroup(_(L("Start G-code")), 0);
 		option = optgroup->get_option("start_gcode");
@@ -1948,7 +1998,7 @@ void TabPrinter::build_fff()
 		};
 		optgroup->append_line(line);
 
-	build_extruder_pages();
+	build_unregular_pages();
 
 #if 0
 	if (!m_no_controller)
@@ -1965,9 +2015,10 @@ void TabPrinter::build_sla()
 
     Line line = optgroup->create_single_option_line("bed_shape");//{ _(L("Bed shape")), "" };
     line.widget = [this](wxWindow* parent) {
-        auto btn = new wxButton(parent, wxID_ANY, _(L(" Set ")) + dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
-        btn->SetFont(wxGetApp().small_font());
-        btn->SetBitmap(create_scaled_bitmap(this, "printer_white"));
+        ScalableButton* btn;
+        add_scaled_button(parent, &btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT);
+        btn->SetFont(wxGetApp().normal_font());
+
 
         auto sizer = new wxBoxSizer(wxHORIZONTAL);
         sizer->Add(btn);
@@ -2023,7 +2074,7 @@ void TabPrinter::build_sla()
     optgroup = page->new_optgroup(_(L("Print Host upload")));
     build_printhost(optgroup.get());
 
-    const int notes_field_height = 25 * m_em_unit; // 250
+    const int notes_field_height = 25; // 250
 
     page = add_options_page(_(L("Notes")), "note.png");
     optgroup = page->new_optgroup(_(L("Notes")), 0);
@@ -2051,13 +2102,23 @@ void TabPrinter::update_serial_ports()
 
 void TabPrinter::extruders_count_changed(size_t extruders_count)
 {
-	m_extruders_count = extruders_count;
-	m_preset_bundle->printers.get_edited_preset().set_num_extruders(extruders_count);
-	m_preset_bundle->update_multi_material_filament_presets();
-	build_extruder_pages();
-	reload_config();
-	on_value_change("extruders_count", extruders_count);
-    wxGetApp().sidebar().update_objects_list_extruder_column(extruders_count);
+    bool is_count_changed = false;
+    if (m_extruders_count != extruders_count) {
+	    m_extruders_count = extruders_count;
+	    m_preset_bundle->printers.get_edited_preset().set_num_extruders(extruders_count);
+	    m_preset_bundle->update_multi_material_filament_presets();
+        is_count_changed = true;
+    }
+
+    /* This function should be call in any case because of correct updating/rebuilding 
+     * of unregular pages of a Printer Settings
+     */
+	build_unregular_pages();
+
+    if (is_count_changed) {
+        on_value_change("extruders_count", extruders_count);
+        wxGetApp().sidebar().update_objects_list_extruder_column(extruders_count);
+    }
 }
 
 void TabPrinter::append_option_line(ConfigOptionsGroupShp optgroup, const std::string opt_key)
@@ -2078,12 +2139,12 @@ PageShp TabPrinter::build_kinematics_page()
 		// Legend for OptionsGroups
 		auto optgroup = page->new_optgroup("");
 		optgroup->set_show_modified_btns_val(false);
-        optgroup->label_width = 23 * m_em_unit;// 230;
+        optgroup->label_width = 23;// 230;
 		auto line = Line{ "", "" };
 
 		ConfigOptionDef def;
 		def.type = coString;
-		def.width = 150;
+		def.width = 15;
 		def.gui_type = "legend";
         def.mode = comAdvanced;
 		def.tooltip = L("Values in this column are for Full Power mode");
@@ -2125,12 +2186,23 @@ PageShp TabPrinter::build_kinematics_page()
 	return page;
 }
 
-
-void TabPrinter::build_extruder_pages()
+/* Previous name build_extruder_pages().
+ * 
+ * This function was renamed because of now it implements not just an extruder pages building, 
+ * but "Machine limits" and "Single extruder MM setup" too 
+ * (These pages can changes according to the another values of a current preset)
+ * */
+void TabPrinter::build_unregular_pages()
 {
 	size_t		n_before_extruders = 2;			//	Count of pages before Extruder pages
 	bool		is_marlin_flavor = m_config->option<ConfigOptionEnum<GCodeFlavor>>("gcode_flavor")->value == gcfMarlin;
 
+    /* ! Freeze/Thaw in this function is needed to avoid call OnPaint() for erased pages 
+     * and be cause of application crash, when try to change Preset in moment,
+     * when one of unregular pages is selected.
+     *  */
+    Freeze();
+
 	// Add/delete Kinematics page according to is_marlin_flavor
 	size_t existed_page = 0;
 	for (int i = n_before_extruders; i < m_pages.size(); ++i) // first make sure it's not there already
@@ -2175,12 +2247,11 @@ void TabPrinter::build_extruder_pages()
 		m_has_single_extruder_MM_page = true;
 	}
 	
-
+    // Build missed extruder pages
 	for (auto extruder_idx = m_extruders_count_old; extruder_idx < m_extruders_count; ++extruder_idx) {
 		//# build page
-		char buf[512];
-		sprintf(buf, _CHB(L("Extruder %d")), extruder_idx + 1);
-		auto page = add_options_page(from_u8(buf), "funnel", true);
+        const wxString& page_name = wxString::Format(_(L("Extruder %d")), int(extruder_idx + 1));
+        auto page = add_options_page(page_name, "funnel", true);
 		m_pages.insert(m_pages.begin() + n_before_extruders + extruder_idx, page);
 			
 			auto optgroup = page->new_optgroup(_(L("Size")));
@@ -2223,8 +2294,13 @@ void TabPrinter::build_extruder_pages()
 		m_pages.erase(	m_pages.begin() + n_before_extruders + m_extruders_count, 
 						m_pages.begin() + n_before_extruders + m_extruders_count_old);
 
+    Thaw();
+
 	m_extruders_count_old = m_extruders_count;
 	rebuild_page_tree();
+
+    // Reload preset pages with current configuration values
+    reload_config();
 }
 
 // this gets executed after preset is loaded and before GUI fields are updated
@@ -2492,7 +2568,6 @@ void Tab::rebuild_page_tree()
 			m_treectrl->SelectItem(item);
 		}
 	}
-// 	Thaw();
 }
 
 void Tab::update_page_tree_visibility()
@@ -2728,7 +2803,8 @@ bool Tab::may_switch_to_SLA_preset()
 
 void Tab::OnTreeSelChange(wxTreeEvent& event)
 {
-	if (m_disable_tree_sel_changed_event) return;
+	if (m_disable_tree_sel_changed_event)         
+        return;
 
 // There is a bug related to Ubuntu overlay scrollbars, see https://github.com/prusa3d/Slic3r/issues/898 and https://github.com/prusa3d/Slic3r/issues/952.
 // The issue apparently manifests when Show()ing a window with overlay scrollbars while the UI is frozen. For this reason,
@@ -2877,7 +2953,7 @@ void Tab::toggle_show_hide_incompatible()
 
 void Tab::update_show_hide_incompatible_button()
 {
-	m_btn_hide_incompatible_presets->SetBitmap(m_show_incompatible_presets ?
+	m_btn_hide_incompatible_presets->SetBitmap_(m_show_incompatible_presets ?
 		m_bmp_show_incompatible_presets : m_bmp_hide_incompatible_presets);
 	m_btn_hide_incompatible_presets->SetToolTip(m_show_incompatible_presets ?
 		"Both compatible an incompatible presets are shown. Click to hide presets not compatible with the current printer." :
@@ -2909,10 +2985,8 @@ wxSizer* Tab::compatible_widget_create(wxWindow* parent, PresetDependencies &dep
 {
 	deps.checkbox = new wxCheckBox(parent, wxID_ANY, _(L("All")));
 	deps.checkbox->SetFont(Slic3r::GUI::wxGetApp().normal_font());
-	deps.btn = new wxButton(parent, wxID_ANY, _(L(" Set "))+dots, wxDefaultPosition, wxDefaultSize, wxBU_LEFT | wxBU_EXACTFIT);
-	deps.btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
-
-    deps.btn->SetBitmap(create_scaled_bitmap(this, "printer_white"));
+    add_scaled_button(parent, &deps.btn, "printer_white", _(L(" Set ")) + dots, wxBU_LEFT | wxBU_EXACTFIT);
+    deps.btn->SetFont(Slic3r::GUI::wxGetApp().normal_font());
 
 	auto sizer = new wxBoxSizer(wxHORIZONTAL);
 	sizer->Add((deps.checkbox), 0, wxALIGN_CENTER_VERTICAL);
@@ -3069,6 +3143,12 @@ void Page::update_visibility(ConfigOptionMode mode)
     m_show = ret_val;
 }
 
+void Page::msw_rescale()
+{
+    for (auto group : m_optgroups)
+        group->msw_rescale();
+}
+
 Field* Page::get_field(const t_config_option_key& opt_key, int opt_index /*= -1*/) const
 {
 	Field* field = nullptr;
@@ -3092,18 +3172,16 @@ bool Page::set_value(const t_config_option_key& opt_key, const boost::any& value
 // package Slic3r::GUI::Tab::Page;
 ConfigOptionsGroupShp Page::new_optgroup(const wxString& title, int noncommon_label_width /*= -1*/)
 {
-    auto extra_column = [](wxWindow* parent, const Line& line)
+    auto extra_column = [this](wxWindow* parent, const Line& line)
     {
         std::string bmp_name;
         const std::vector<Option>& options = line.get_options();
-        if (options.size() == 0 || options[0].opt.gui_type == "legend")
-            bmp_name = "";// "error.png";
-        else {
-            auto mode = options[0].opt.mode;  //we assume that we have one option per line
-            bmp_name = mode == comExpert   ? "mode_expert_.png" :
-                       mode == comAdvanced ? "mode_middle_.png" : "mode_simple_.png";
-        }                               
-        auto bmp = new wxStaticBitmap(parent, wxID_ANY, bmp_name.empty() ? wxNullBitmap : create_scaled_bitmap(parent, bmp_name));
+        int mode_id = int(options[0].opt.mode);
+        const wxBitmap& bitmap = options.size() == 0 || options[0].opt.gui_type == "legend" ? wxNullBitmap :
+                                 m_mode_bitmap_cache[mode_id].bmp();
+        auto bmp = new wxStaticBitmap(parent, wxID_ANY, bitmap);
+        bmp->SetClientData((void*)&m_mode_bitmap_cache[mode_id]);
+
         bmp->SetBackgroundStyle(wxBG_STYLE_PAINT);
         return bmp;
     };
@@ -3142,6 +3220,14 @@ ConfigOptionsGroupShp Page::new_optgroup(const wxString& title, int noncommon_la
 		return static_cast<Tab*>(tab)->m_presets->get_selected_preset_parent() != nullptr;
 	};
 
+    optgroup->rescale_extra_column_item = [this](wxWindow* win) {
+        auto *ctrl = dynamic_cast<wxStaticBitmap*>(win);
+        if (ctrl == nullptr)
+            return;
+
+        ctrl->SetBitmap(reinterpret_cast<ScalableBitmap*>(ctrl->GetClientData())->bmp());
+    };
+
 	vsizer()->Add(optgroup->sizer, 0, wxEXPAND | wxALL, 10);
 	m_optgroups.push_back(optgroup);
 
@@ -3222,7 +3308,7 @@ void TabSLAMaterial::build()
     optgroup->append_single_option_line("initial_exposure_time");
 
     optgroup = page->new_optgroup(_(L("Corrections")));
-    optgroup->label_width = 19 * m_em_unit;//190;
+    optgroup->label_width = 19;//190;
     std::vector<std::string> corrections = {"material_correction"};
 //    std::vector<std::string> axes{ "X", "Y", "Z" };
     std::vector<std::string> axes{ "XY", "Z" };
@@ -3232,7 +3318,7 @@ void TabSLAMaterial::build()
         for (auto& axis : axes) {
             auto opt = optgroup->get_option(opt_key, id);
             opt.opt.label = axis;
-            opt.opt.width = 60;
+            opt.opt.width = 6;
             line.append_option(opt);
             ++id;
         }
@@ -3244,7 +3330,7 @@ void TabSLAMaterial::build()
     optgroup->label_width = 0;
     Option option = optgroup->get_option("material_notes");
     option.opt.full_width = true;
-    option.opt.height = 25 * m_em_unit;//250;
+    option.opt.height = 25;//250;
     optgroup->append_single_option_line(option);
 
     page = add_options_page(_(L("Dependencies")), "wrench.png");
diff --git a/src/slic3r/GUI/Tab.hpp b/src/slic3r/GUI/Tab.hpp
index 58950990c..ae13cb4b5 100644
--- a/src/slic3r/GUI/Tab.hpp
+++ b/src/slic3r/GUI/Tab.hpp
@@ -30,14 +30,14 @@
 
 #include "BedShapeDialog.hpp"
 #include "Event.hpp"
-
-class PrusaModeSizer;
+#include "wxExtensions.hpp"
 
 namespace Slic3r {
 namespace GUI {
 
-typedef std::pair<wxBitmap*, std::string>				t_icon_description;
-typedef std::vector<std::pair<wxBitmap*, std::string>>	t_icon_descriptions;
+
+typedef std::pair<ScalableBitmap*, std::string>				    t_icon_description;
+typedef std::vector<std::pair<ScalableBitmap*, std::string>>    t_icon_descriptions;
 
 // Single Tab page containing a{ vsizer } of{ optgroups }
 // package Slic3r::GUI::Tab::Page;
@@ -50,10 +50,11 @@ class Page : public wxScrolledWindow
 	wxBoxSizer*		m_vsizer;
     bool            m_show = true;
 public:
-	Page(wxWindow* parent, const wxString title, const int iconID) :
+    Page(wxWindow* parent, const wxString title, const int iconID, const std::vector<ScalableBitmap>& mode_bmp_cache) :
 			m_parent(parent),
 			m_title(title),
-			m_iconID(iconID)
+			m_iconID(iconID),
+            m_mode_bitmap_cache(mode_bmp_cache)
 	{
 		Create(m_parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
 		m_vsizer = new wxBoxSizer(wxVERTICAL);
@@ -67,6 +68,7 @@ public:
 
     // Delayed layout after resizing the main window.
     bool 				layout_valid = false;
+    const std::vector<ScalableBitmap>&   m_mode_bitmap_cache;
 
 public:
 	std::vector <ConfigOptionsGroupShp> m_optgroups;
@@ -79,6 +81,7 @@ public:
 	void		set_config(DynamicPrintConfig* config_in) { m_config = config_in; }
 	void		reload_config();
     void        update_visibility(ConfigOptionMode mode);
+    void        msw_rescale();
 	Field*		get_field(const t_config_option_key& opt_key, int opt_index = -1) const;
 	bool		set_value(const t_config_option_key& opt_key, const boost::any& value);
 	ConfigOptionsGroupShp	new_optgroup(const wxString& title, int noncommon_label_width = -1);
@@ -119,20 +122,20 @@ protected:
 	std::string			m_name;
 	const wxString		m_title;
 	wxBitmapComboBox*	m_presets_choice;
-	wxBitmapButton*		m_btn_save_preset;
-	wxBitmapButton*		m_btn_delete_preset;
-	wxBitmapButton*		m_btn_hide_incompatible_presets;
+	ScalableButton*		m_btn_save_preset;
+	ScalableButton*		m_btn_delete_preset;
+	ScalableButton*		m_btn_hide_incompatible_presets;
 	wxBoxSizer*			m_hsizer;
 	wxBoxSizer*			m_left_sizer;
 	wxTreeCtrl*			m_treectrl;
 	wxImageList*		m_icons;
 
-    PrusaModeSizer*     m_mode_sizer;
+    ModeSizer*     m_mode_sizer;
 
    	struct PresetDependencies {
 		Preset::Type type	  = Preset::TYPE_INVALID;
 		wxCheckBox 	*checkbox = nullptr;
-		wxButton 	*btn   	  = nullptr;
+		ScalableButton 	*btn  = nullptr;
 		std::string  key_list; // "compatible_printers"
 		std::string  key_condition;
 		std::string  dialog_title;
@@ -141,25 +144,27 @@ protected:
 	PresetDependencies 	m_compatible_printers;
 	PresetDependencies 	m_compatible_prints;
 
-	wxButton*			m_undo_btn;
-	wxButton*			m_undo_to_sys_btn;
-	wxButton*			m_question_btn;
-	wxImageList*		m_preset_icons;
+	ScalableButton*			m_undo_btn;
+	ScalableButton*			m_undo_to_sys_btn;
+	ScalableButton*			m_question_btn;
 
 	// Cached bitmaps.
 	// A "flag" icon to be displayned next to the preset name in the Tab's combo box.
-	wxBitmap			m_bmp_show_incompatible_presets;
-	wxBitmap			m_bmp_hide_incompatible_presets;
+	ScalableBitmap			m_bmp_show_incompatible_presets;
+	ScalableBitmap			m_bmp_hide_incompatible_presets;
 	// Bitmaps to be shown on the "Revert to system" aka "Lock to system" button next to each input field.
-	wxBitmap 			m_bmp_value_lock;
-	wxBitmap 			m_bmp_value_unlock;
-	wxBitmap 			m_bmp_white_bullet;
+	ScalableBitmap 			m_bmp_value_lock;
+	ScalableBitmap 			m_bmp_value_unlock;
+	ScalableBitmap 			m_bmp_white_bullet;
 	// The following bitmap points to either m_bmp_value_unlock or m_bmp_white_bullet, depending on whether the current preset has a parent preset.
-	wxBitmap 		   *m_bmp_non_system;
+	ScalableBitmap 		   *m_bmp_non_system;
 	// Bitmaps to be shown on the "Undo user changes" button next to each input field.
-	wxBitmap 			m_bmp_value_revert;
-// 	wxBitmap 			m_bmp_value_unmodified;
-	wxBitmap			m_bmp_question;
+	ScalableBitmap 			m_bmp_value_revert;
+    
+    std::vector<ScalableButton*>	m_scaled_buttons = {};    
+    std::vector<ScalableBitmap*>	m_scaled_bitmaps = {};    
+    std::vector<ScalableBitmap>     m_scaled_icons_list = {};
+    std::vector<ScalableBitmap>     m_mode_bitmap_cache = {};
 
 	// Colors for ui "decoration"
 	wxColour			m_sys_label_clr;
@@ -236,7 +241,11 @@ public:
     virtual bool supports_printer_technology(const PrinterTechnology tech) = 0;
 
 	void		create_preset_tab();
-	void		load_current_preset();
+    void        add_scaled_button(wxWindow* parent, ScalableButton** btn, const std::string& icon_name, 
+                                  const wxString& label = wxEmptyString, 
+                                  long style = wxBU_EXACTFIT | wxNO_BORDER);
+    void        add_scaled_bitmap(wxWindow* parent, ScalableBitmap& btn, const std::string& icon_name);
+    void		load_current_preset();
 	void        rebuild_page_tree();
 	void        update_page_tree_visibility();
 	// Select a new preset, possibly delete the current one.
@@ -274,6 +283,7 @@ public:
 	virtual void	reload_config();
     void            update_mode();
     void            update_visibility();
+    void            msw_rescale();
 	Field*			get_field(const t_config_option_key& opt_key, int opt_index = -1) const;
 	bool			set_value(const t_config_option_key& opt_key, const boost::any& value);
 	wxSizer*		description_line_widget(wxWindow* parent, ogStaticText** StaticText);
@@ -345,8 +355,8 @@ class TabPrinter : public Tab
     void build_printhost(ConfigOptionsGroup *optgroup);
 public:
 	wxButton*	m_serial_test_btn = nullptr;
-	wxButton*	m_print_host_test_btn = nullptr;
-	wxButton*	m_printhost_browse_btn = nullptr;
+	ScalableButton*	m_print_host_test_btn = nullptr;
+	ScalableButton*	m_printhost_browse_btn = nullptr;
 
 	size_t		m_extruders_count;
 	size_t		m_extruders_count_old = 0;
@@ -368,7 +378,7 @@ public:
 	void		update_serial_ports();
 	void		extruders_count_changed(size_t extruders_count);
 	PageShp		build_kinematics_page();
-	void		build_extruder_pages();
+	void		build_unregular_pages();
 	void		on_preset_loaded() override;
 	void		init_options_list() override;
     bool 		supports_printer_technology(const PrinterTechnology /* tech */) override { return true; }
diff --git a/src/slic3r/GUI/UpdateDialogs.cpp b/src/slic3r/GUI/UpdateDialogs.cpp
index 99288488c..b4943cf46 100644
--- a/src/slic3r/GUI/UpdateDialogs.cpp
+++ b/src/slic3r/GUI/UpdateDialogs.cpp
@@ -109,7 +109,8 @@ MsgUpdateConfig::~MsgUpdateConfig() {}
 // MsgDataIncompatible
 
 MsgDataIncompatible::MsgDataIncompatible(const std::unordered_map<std::string, wxString> &incompats) :
-	MsgDialog(nullptr, _(L("Slic3r incompatibility")), _(L("Slic3r configuration is incompatible")), wxID_NONE)
+    MsgDialog(nullptr, wxString::Format(_(L("%s incompatibility")), SLIC3R_APP_NAME), 
+                       wxString::Format(_(L("%s configuration is incompatible")), SLIC3R_APP_NAME), wxID_NONE)
 {
 	logo->SetBitmap(create_scaled_bitmap(this, "Slic3r_192px_grayscale.png", 192));
 
@@ -117,9 +118,9 @@ MsgDataIncompatible::MsgDataIncompatible(const std::unordered_map<std::string, w
 		"This version of %s is not compatible with currently installed configuration bundles.\n"
 		"This probably happened as a result of running an older %s after using a newer one.\n\n"
 
-		"You may either exit Slic3r and try again with a newer version, or you may re-run the initial configuration. "
-		"Doing so will create a backup snapshot of the existing configuration before installing files compatible with this Slic3r.\n"
-		)), SLIC3R_APP_NAME, SLIC3R_APP_NAME));
+		"You may either exit %s and try again with a newer version, or you may re-run the initial configuration. "
+		"Doing so will create a backup snapshot of the existing configuration before installing files compatible with this %s.\n"
+		)), SLIC3R_APP_NAME, SLIC3R_APP_NAME, SLIC3R_APP_NAME, SLIC3R_APP_NAME));
 	text->Wrap(CONTENT_WIDTH * wxGetApp().em_unit());
 	content_sizer->Add(text);
 
@@ -144,7 +145,7 @@ MsgDataIncompatible::MsgDataIncompatible(const std::unordered_map<std::string, w
 	content_sizer->Add(versions);
 	content_sizer->AddSpacer(2*VERT_SPACING);
 
-	auto *btn_exit = new wxButton(this, wxID_EXIT, _(L("Exit Slic3r")));
+    auto *btn_exit = new wxButton(this, wxID_EXIT, wxString::Format(_(L("Exit %s")), SLIC3R_APP_NAME));
 	btn_sizer->Add(btn_exit);
 	btn_sizer->AddSpacer(HORIZ_SPACING);
 	auto *btn_reconf = new wxButton(this, wxID_REPLACE, _(L("Re-configure")));
@@ -187,7 +188,7 @@ MsgDataLegacy::MsgDataLegacy() :
 	auto *text2 = new wxStaticText(this, wxID_ANY, _(L("For more information please visit our wiki page:")));
 	static const wxString url("https://github.com/prusa3d/Slic3r/wiki/Slic3r-PE-1.40-configuration-update");
 	// The wiki page name is intentionally not localized:
-	auto *link = new wxHyperlinkCtrl(this, wxID_ANY, "Slic3r PE 1.40 configuration update", CONFIG_UPDATE_WIKI_URL);
+	auto *link = new wxHyperlinkCtrl(this, wxID_ANY, wxString::Format("%s 1.40 configuration update", SLIC3R_APP_NAME), CONFIG_UPDATE_WIKI_URL);
 	content_sizer->Add(text2);
 	content_sizer->Add(link);
 	content_sizer->AddSpacer(VERT_SPACING);
diff --git a/src/slic3r/GUI/wxExtensions.cpp b/src/slic3r/GUI/wxExtensions.cpp
index c0390d1a2..d76e0da93 100644
--- a/src/slic3r/GUI/wxExtensions.cpp
+++ b/src/slic3r/GUI/wxExtensions.cpp
@@ -18,6 +18,7 @@
 #include "GUI_ObjectList.hpp"
 #include "libslic3r/GCode/PreviewData.hpp"
 #include "I18N.hpp"
+#include "GUI_Utils.hpp"
 
 using Slic3r::GUI::from_u8;
 
@@ -266,161 +267,46 @@ void wxDataViewTreeCtrlComboPopup::OnDataViewTreeCtrlSelection(wxCommandEvent& e
 	cmb->SetText(selected);
 }
 
-// ----------------------------------------------------------------------------
-// ***  PrusaCollapsiblePane  ***    
-// ----------------------------------------------------------------------------
-void PrusaCollapsiblePane::OnStateChange(const wxSize& sz)
+// edit tooltip : change Slic3r to SLIC3R_APP_KEY
+// Temporary workaround for localization
+void edit_tooltip(wxString& tooltip)
 {
-#ifdef __WXOSX__
-	wxCollapsiblePane::OnStateChange(sz);
-#else
-	SetSize(sz);
-
-	if (this->HasFlag(wxCP_NO_TLW_RESIZE))
-	{
-		// the user asked to explicitly handle the resizing itself...
-		return;
-	}
-
-	auto top = GetParent(); //right_panel
-	if (!top)
-		return;
-
-	wxSizer *sizer = top->GetSizer();
-	if (!sizer)
-		return;
-
-	const wxSize newBestSize = sizer->ComputeFittingClientSize(top);
-	top->SetMinClientSize(newBestSize);
-
-	wxWindowUpdateLocker noUpdates_p(top->GetParent());
-	// we shouldn't attempt to resize a maximized window, whatever happens
-	// 	if (!top->IsMaximized())
-	// 		top->SetClientSize(newBestSize);
-	top->GetParent()->Layout();
-	top->Refresh();
-#endif //__WXOSX__
+    tooltip.Replace("Slic3r", SLIC3R_APP_KEY, true);
 }
 
-// ----------------------------------------------------------------------------
-// ***  PrusaCollapsiblePaneMSW  ***    used only #ifdef __WXMSW__
-// ----------------------------------------------------------------------------
-#ifdef __WXMSW__
-bool PrusaCollapsiblePaneMSW::Create(wxWindow *parent, wxWindowID id, const wxString& label, 
-	const wxPoint& pos, const wxSize& size, long style, const wxValidator& val, const wxString& name)
+/* Function for rescale of buttons in Dialog under MSW if dpi is changed.
+ * btn_ids - vector of buttons identifiers
+ */
+void msw_buttons_rescale(wxDialog* dlg, const int em_unit, const std::vector<int>& btn_ids)
 {
-	if (!wxControl::Create(parent, id, pos, size, style, val, name))
-		return false;
-	// m_pStaticLine = NULL;
-	m_strLabel = label;
+    const wxSize& btn_size = wxSize(-1, int(2.5f * em_unit + 0.5f));
 
-	// sizer containing the expand button and possibly a static line
-	m_sz = new wxBoxSizer(wxHORIZONTAL);
-
-	m_bmp_close.LoadFile(Slic3r::GUI::from_u8(Slic3r::var("disclosure_triangle_close.png")), wxBITMAP_TYPE_PNG);
-	m_bmp_open.LoadFile(Slic3r::GUI::from_u8(Slic3r::var("disclosure_triangle_open.png")), wxBITMAP_TYPE_PNG);
-
-	m_pDisclosureTriangleButton = new wxButton(this, wxID_ANY, m_strLabel, wxPoint(0, 0),
-		wxDefaultSize, wxBU_EXACTFIT | wxNO_BORDER);
-	UpdateBtnBmp();
-	m_pDisclosureTriangleButton->Bind(wxEVT_BUTTON, [this](wxCommandEvent& event)
-	{
-		if (event.GetEventObject() != m_pDisclosureTriangleButton)
-		{
-			event.Skip();
-			return;
-		}
-
-		Collapse(!IsCollapsed());
-
-		// this change was generated by the user - send the event
-		wxCollapsiblePaneEvent ev(this, GetId(), IsCollapsed());
-		GetEventHandler()->ProcessEvent(ev);
-	});
-
-	m_sz->Add(m_pDisclosureTriangleButton, 0, wxLEFT | wxTOP | wxBOTTOM, GetBorder());
-
-	// do not set sz as our sizers since we handle the pane window without using sizers
-	m_pPane = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxDefaultSize,
-		wxTAB_TRAVERSAL | wxNO_BORDER, wxT("wxCollapsiblePanePane"));
-
-    wxColour&& clr = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
-	m_pDisclosureTriangleButton->SetBackgroundColour(clr);
-	this->SetBackgroundColour(clr);
-	m_pPane->SetBackgroundColour(clr);
-
-	// start as collapsed:
-	m_pPane->Hide();
-
-	return true;
+    for (int btn_id : btn_ids) {
+        // There is a case [FirmwareDialog], when we have wxControl instead of wxButton
+        // so let casting everything to the wxControl
+        wxControl* btn = static_cast<wxControl*>(dlg->FindWindowById(btn_id, dlg));
+        if (btn)
+            btn->SetMinSize(btn_size);
+    }
 }
 
-void PrusaCollapsiblePaneMSW::UpdateBtnBmp()
+/* Function for getting of em_unit value from correct parent.
+ * In most of cases it is m_em_unit value from GUI_App,
+ * but for DPIDialogs it's its own value. 
+ * This value will be used to correct rescale after moving between 
+ * Displays with different HDPI */
+int em_unit(wxWindow* win)
 {
-	if (IsCollapsed())
-		m_pDisclosureTriangleButton->SetBitmap(m_bmp_close);
-	else{
-		m_pDisclosureTriangleButton->SetBitmap(m_bmp_open);
-		// To updating button bitmap it's needed to lost focus on this button, so
-		// we set focus to mainframe 
-		//GetParent()->GetParent()->GetParent()->SetFocus();
-		//or to pane
-		GetPane()->SetFocus();
-	}
-	Layout();
+    if (win)
+    {
+        Slic3r::GUI::DPIDialog* dlg = dynamic_cast<Slic3r::GUI::DPIDialog*>(Slic3r::GUI::find_toplevel_parent(win));
+        if (dlg)
+            return dlg->em_unit();
+    }
+    
+    return Slic3r::GUI::wxGetApp().em_unit();
 }
 
-void PrusaCollapsiblePaneMSW::SetLabel(const wxString &label)
-{
-	m_strLabel = label;
-	m_pDisclosureTriangleButton->SetLabel(m_strLabel);
-	Layout();
-}
-
-bool PrusaCollapsiblePaneMSW::Layout()
-{
-	if (!m_pDisclosureTriangleButton || !m_pPane || !m_sz)
-		return false;     // we need to complete the creation first!
-
-	wxSize oursz(GetSize());
-
-	// move & resize the button and the static line
-	m_sz->SetDimension(0, 0, oursz.GetWidth(), m_sz->GetMinSize().GetHeight());
-	m_sz->Layout();
-
-	if (IsExpanded())
-	{
-		// move & resize the container window
-		int yoffset = m_sz->GetSize().GetHeight() + GetBorder();
-		m_pPane->SetSize(0, yoffset,
-			oursz.x, oursz.y - yoffset);
-
-		// this is very important to make the pane window layout show correctly
-		m_pPane->Layout();
-	}
-
-	return true;
-}
-
-void PrusaCollapsiblePaneMSW::Collapse(bool collapse)
-{
-	// optimization
-	if (IsCollapsed() == collapse)
-		return;
-
-	InvalidateBestSize();
-
-	// update our state
-	m_pPane->Show(!collapse);
-
-	// update button bitmap
-	UpdateBtnBmp();
-
-	OnStateChange(GetBestSize());
-}
-#endif //__WXMSW__
-
-
 // If an icon has horizontal orientation (width > height) call this function with is_horizontal = true
 wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name_in, const int px_cnt/* = 16*/, const bool is_horizontal /* = false*/)
 {
@@ -436,7 +322,7 @@ wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name_in, con
     unsigned int height, width = height = 0;
     unsigned int& scale_base = is_horizontal ? width : height;
 
-    scale_base = (unsigned int)(Slic3r::GUI::wxGetApp().em_unit() * px_cnt * 0.1f + 0.5f);
+    scale_base = (unsigned int)(em_unit(win) * px_cnt * 0.1f + 0.5f);
 
     std::string bmp_name = bmp_name_in;
     boost::replace_last(bmp_name, ".png", "");
@@ -457,58 +343,76 @@ wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name_in, con
 
 // *****************************************************************************
 // ----------------------------------------------------------------------------
-// PrusaObjectDataViewModelNode
+// ObjectDataViewModelNode
 // ----------------------------------------------------------------------------
 
-void PrusaObjectDataViewModelNode::set_object_action_icon() {
-    m_action_icon = create_scaled_bitmap(nullptr, "advanced_plus");    // FIXME: pass window ptr
-}
-void  PrusaObjectDataViewModelNode::set_part_action_icon() {
-    m_action_icon = create_scaled_bitmap(nullptr, m_type == itVolume ? "cog" : "set_separate_obj");    // FIXME: pass window ptr
+void ObjectDataViewModelNode::set_action_icon()
+{
+    m_action_icon_name = m_type == itObject ? "advanced_plus" : 
+                         m_type == itVolume ? "cog"           : "set_separate_obj";
+    m_action_icon = create_scaled_bitmap(nullptr, m_action_icon_name);    // FIXME: pass window ptr
 }
 
 Slic3r::GUI::BitmapCache *m_bitmap_cache = nullptr;
-bool PrusaObjectDataViewModelNode::update_settings_digest(const std::vector<std::string>& categories)
+void ObjectDataViewModelNode::update_settings_digest_bitmaps()
+{
+    m_bmp = m_empty_bmp;
+
+    std::map<std::string, wxBitmap>& categories_icon = Slic3r::GUI::wxGetApp().obj_list()->CATEGORY_ICON;
+
+    std::string scaled_bitmap_name = m_name.ToUTF8().data();
+    scaled_bitmap_name += "-em" + std::to_string(Slic3r::GUI::wxGetApp().em_unit());
+
+    wxBitmap *bmp = m_bitmap_cache->find(scaled_bitmap_name);
+    if (bmp == nullptr) {
+        std::vector<wxBitmap> bmps;
+        for (auto& cat : m_opt_categories)
+            bmps.emplace_back(  categories_icon.find(cat) == categories_icon.end() ?
+                                wxNullBitmap : categories_icon.at(cat));
+        bmp = m_bitmap_cache->insert(scaled_bitmap_name, bmps);
+    }
+
+    m_bmp = *bmp;
+}
+
+bool ObjectDataViewModelNode::update_settings_digest(const std::vector<std::string>& categories)
 {
     if (m_type != itSettings || m_opt_categories == categories)
         return false;
 
     m_opt_categories = categories;
     m_name = wxEmptyString;
-    m_bmp = m_empty_bmp;
-
-    std::map<std::string, wxBitmap>& categories_icon = Slic3r::GUI::wxGetApp().obj_list()->CATEGORY_ICON;
 
     for (auto& cat : m_opt_categories)
         m_name += cat + "; ";
     if (!m_name.IsEmpty())
         m_name.erase(m_name.Length()-2, 2); // Delete last "; "
 
-    wxBitmap *bmp = m_bitmap_cache->find(m_name.ToUTF8().data());
-    if (bmp == nullptr) {
-        std::vector<wxBitmap> bmps;
-        for (auto& cat : m_opt_categories)
-            bmps.emplace_back(categories_icon.find(cat) == categories_icon.end() ?
-                              wxNullBitmap : categories_icon.at(cat));
-        bmp = m_bitmap_cache->insert(m_name.ToUTF8().data(), bmps);
-    }
-
-    m_bmp = *bmp;
+    update_settings_digest_bitmaps();
 
     return true;
 }
 
+void ObjectDataViewModelNode::msw_rescale()
+{
+    if (!m_action_icon_name.empty())
+        m_action_icon = create_scaled_bitmap(nullptr, m_action_icon_name);
+
+    if (!m_opt_categories.empty())
+        update_settings_digest_bitmaps();
+}
+
 // *****************************************************************************
 // ----------------------------------------------------------------------------
-// PrusaObjectDataViewModel
+// ObjectDataViewModel
 // ----------------------------------------------------------------------------
 
-PrusaObjectDataViewModel::PrusaObjectDataViewModel()
+ObjectDataViewModel::ObjectDataViewModel()
 {
     m_bitmap_cache = new Slic3r::GUI::BitmapCache;
 }
 
-PrusaObjectDataViewModel::~PrusaObjectDataViewModel()
+ObjectDataViewModel::~ObjectDataViewModel()
 {
     for (auto object : m_objects)
 			delete object;
@@ -516,10 +420,10 @@ PrusaObjectDataViewModel::~PrusaObjectDataViewModel()
     m_bitmap_cache = nullptr;
 }
 
-wxDataViewItem PrusaObjectDataViewModel::Add(const wxString &name, const int extruder)
+wxDataViewItem ObjectDataViewModel::Add(const wxString &name, const int extruder)
 {
     const wxString extruder_str = extruder == 0 ? "default" : wxString::Format("%d", extruder);
-	auto root = new PrusaObjectDataViewModelNode(name, extruder_str);
+	auto root = new ObjectDataViewModelNode(name, extruder_str);
 	m_objects.push_back(root);
 	// notify control
 	wxDataViewItem child((void*)root);
@@ -528,13 +432,13 @@ wxDataViewItem PrusaObjectDataViewModel::Add(const wxString &name, const int ext
 	return child;
 }
 
-wxDataViewItem PrusaObjectDataViewModel::AddVolumeChild(const wxDataViewItem &parent_item,
-    const wxString &name,
-    const Slic3r::ModelVolumeType volume_type,
-    const int extruder/* = 0*/,
-    const bool create_frst_child/* = true*/)
+wxDataViewItem ObjectDataViewModel::AddVolumeChild( const wxDataViewItem &parent_item,
+                                                    const wxString &name,
+                                                    const Slic3r::ModelVolumeType volume_type,
+                                                    const int extruder/* = 0*/,
+                                                    const bool create_frst_child/* = true*/)
 {
-	PrusaObjectDataViewModelNode *root = (PrusaObjectDataViewModelNode*)parent_item.GetID();
+	ObjectDataViewModelNode *root = (ObjectDataViewModelNode*)parent_item.GetID();
 	if (!root) return wxDataViewItem(0);
 
     wxString extruder_str = extruder == 0 ? "default" : wxString::Format("%d", extruder);
@@ -546,7 +450,7 @@ wxDataViewItem PrusaObjectDataViewModel::AddVolumeChild(const wxDataViewItem &pa
 
     if (create_frst_child && root->m_volumes_cnt == 0)
     {
-		const auto node = new PrusaObjectDataViewModelNode(root, root->m_name, *m_volume_bmps[0], extruder_str, 0);
+		const auto node = new ObjectDataViewModelNode(root, root->m_name, *m_volume_bmps[0], extruder_str, 0);
         insert_position < 0 ? root->Append(node) : root->Insert(node, insert_position);
 		// notify control
 		const wxDataViewItem child((void*)node);
@@ -554,24 +458,28 @@ wxDataViewItem PrusaObjectDataViewModel::AddVolumeChild(const wxDataViewItem &pa
 
         root->m_volumes_cnt++;
         if (insert_position > 0) insert_position++;
+
+        node->m_volume_type = volume_type;
 	}
 
-    const auto node = new PrusaObjectDataViewModelNode(root, name, *m_volume_bmps[int(volume_type)], extruder_str, root->m_volumes_cnt);
+    const auto node = new ObjectDataViewModelNode(root, name, *m_volume_bmps[int(volume_type)], extruder_str, root->m_volumes_cnt);
     insert_position < 0 ? root->Append(node) : root->Insert(node, insert_position);
 	// notify control
 	const wxDataViewItem child((void*)node);
     ItemAdded(parent_item, child);
     root->m_volumes_cnt++;
 
+    node->m_volume_type = volume_type;
+
 	return child;
 }
 
-wxDataViewItem PrusaObjectDataViewModel::AddSettingsChild(const wxDataViewItem &parent_item)
+wxDataViewItem ObjectDataViewModel::AddSettingsChild(const wxDataViewItem &parent_item)
 {
-    PrusaObjectDataViewModelNode *root = (PrusaObjectDataViewModelNode*)parent_item.GetID();
+    ObjectDataViewModelNode *root = (ObjectDataViewModelNode*)parent_item.GetID();
     if (!root) return wxDataViewItem(0);
 
-    const auto node = new PrusaObjectDataViewModelNode(root, itSettings);
+    const auto node = new ObjectDataViewModelNode(root, itSettings);
     root->Insert(node, 0);
     // notify control
     const wxDataViewItem child((void*)node);
@@ -579,27 +487,27 @@ wxDataViewItem PrusaObjectDataViewModel::AddSettingsChild(const wxDataViewItem &
     return child;
 }
 
-int get_istances_root_idx(PrusaObjectDataViewModelNode *parent_node)
+int get_istances_root_idx(ObjectDataViewModelNode *parent_node)
 {
     // because of istance_root is a last item of the object
     const int inst_root_idx = parent_node->GetChildCount()-1;
 
-    if (inst_root_idx < 0 || parent_node->GetNthChild(inst_root_idx)->m_type == itInstanceRoot) 
+    if (inst_root_idx < 0 || parent_node->GetNthChild(inst_root_idx)->GetType() == itInstanceRoot) 
         return inst_root_idx;
     
     return -1;
 }
 
-wxDataViewItem PrusaObjectDataViewModel::AddInstanceChild(const wxDataViewItem &parent_item, size_t num)
+wxDataViewItem ObjectDataViewModel::AddInstanceChild(const wxDataViewItem &parent_item, size_t num)
 {
-    PrusaObjectDataViewModelNode *parent_node = (PrusaObjectDataViewModelNode*)parent_item.GetID();
+    ObjectDataViewModelNode *parent_node = (ObjectDataViewModelNode*)parent_item.GetID();
     if (!parent_node) return wxDataViewItem(0);
 
     // Check and create/get instances root node
     const int inst_root_id = get_istances_root_idx(parent_node);
 
-    PrusaObjectDataViewModelNode *inst_root_node = inst_root_id < 0 ? 
-                                                   new PrusaObjectDataViewModelNode(parent_node, itInstanceRoot) :
+    ObjectDataViewModelNode *inst_root_node = inst_root_id < 0 ? 
+                                                   new ObjectDataViewModelNode(parent_node, itInstanceRoot) :
                                                    parent_node->GetNthChild(inst_root_id);
     const wxDataViewItem inst_root_item((void*)inst_root_node);
 
@@ -611,10 +519,10 @@ wxDataViewItem PrusaObjectDataViewModel::AddInstanceChild(const wxDataViewItem &
     }
 
     // Add instance nodes
-    PrusaObjectDataViewModelNode *instance_node = nullptr;    
+    ObjectDataViewModelNode *instance_node = nullptr;    
     size_t counter = 0;
     while (counter < num) {
-        instance_node = new PrusaObjectDataViewModelNode(inst_root_node, itInstance);
+        instance_node = new ObjectDataViewModelNode(inst_root_node, itInstance);
         inst_root_node->Append(instance_node);
         // notify control
         const wxDataViewItem instance_item((void*)instance_node);
@@ -625,10 +533,10 @@ wxDataViewItem PrusaObjectDataViewModel::AddInstanceChild(const wxDataViewItem &
     return wxDataViewItem((void*)instance_node);
 }
 
-wxDataViewItem PrusaObjectDataViewModel::Delete(const wxDataViewItem &item)
+wxDataViewItem ObjectDataViewModel::Delete(const wxDataViewItem &item)
 {
 	auto ret_item = wxDataViewItem(0);
-	PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+	ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
 	if (!node)      // happens if item.IsOk()==false
 		return ret_item;
 
@@ -676,12 +584,12 @@ wxDataViewItem PrusaObjectDataViewModel::Delete(const wxDataViewItem &item)
             delete node;
             ItemDeleted(parent, item);
 
-            PrusaObjectDataViewModelNode *last_instance_node = node_parent->GetNthChild(0);
+            ObjectDataViewModelNode *last_instance_node = node_parent->GetNthChild(0);
             node_parent->GetChildren().Remove(last_instance_node);
             delete last_instance_node;
             ItemDeleted(parent, wxDataViewItem(last_instance_node));
 
-            PrusaObjectDataViewModelNode *obj_node = node_parent->GetParent();
+            ObjectDataViewModelNode *obj_node = node_parent->GetParent();
             obj_node->GetChildren().Remove(node_parent);
             delete node_parent;
             ret_item = wxDataViewItem(obj_node);
@@ -712,7 +620,7 @@ wxDataViewItem PrusaObjectDataViewModel::Delete(const wxDataViewItem &item)
                 delete node;
                 ItemDeleted(parent, item);
 
-                PrusaObjectDataViewModelNode *last_child_node = node_parent->GetNthChild(vol_idx);
+                ObjectDataViewModelNode *last_child_node = node_parent->GetNthChild(vol_idx);
                 DeleteSettings(wxDataViewItem(last_child_node));
                 node_parent->GetChildren().Remove(last_child_node);
                 node_parent->m_volumes_cnt = 0;
@@ -771,17 +679,17 @@ wxDataViewItem PrusaObjectDataViewModel::Delete(const wxDataViewItem &item)
 	return ret_item;
 }
 
-wxDataViewItem PrusaObjectDataViewModel::DeleteLastInstance(const wxDataViewItem &parent_item, size_t num)
+wxDataViewItem ObjectDataViewModel::DeleteLastInstance(const wxDataViewItem &parent_item, size_t num)
 {
     auto ret_item = wxDataViewItem(0);
-    PrusaObjectDataViewModelNode *parent_node = (PrusaObjectDataViewModelNode*)parent_item.GetID();
+    ObjectDataViewModelNode *parent_node = (ObjectDataViewModelNode*)parent_item.GetID();
     if (!parent_node) return ret_item;
 
     const int inst_root_id = get_istances_root_idx(parent_node);
     if (inst_root_id < 0) return ret_item;
 
     wxDataViewItemArray items;
-    PrusaObjectDataViewModelNode *inst_root_node = parent_node->GetNthChild(inst_root_id);
+    ObjectDataViewModelNode *inst_root_node = parent_node->GetNthChild(inst_root_id);
     const wxDataViewItem inst_root_item((void*)inst_root_node);
 
     const int inst_cnt = inst_root_node->GetChildCount();
@@ -789,7 +697,7 @@ wxDataViewItem PrusaObjectDataViewModel::DeleteLastInstance(const wxDataViewItem
 
     int stop = delete_inst_root_item ? 0 : inst_cnt - num;
     for (int i = inst_cnt - 1; i >= stop;--i) {
-        PrusaObjectDataViewModelNode *last_instance_node = inst_root_node->GetNthChild(i);
+        ObjectDataViewModelNode *last_instance_node = inst_root_node->GetNthChild(i);
         inst_root_node->GetChildren().Remove(last_instance_node);
         delete last_instance_node;
         ItemDeleted(inst_root_item, wxDataViewItem(last_instance_node));
@@ -808,7 +716,7 @@ wxDataViewItem PrusaObjectDataViewModel::DeleteLastInstance(const wxDataViewItem
     return ret_item;
 }
 
-void PrusaObjectDataViewModel::DeleteAll()
+void ObjectDataViewModel::DeleteAll()
 {
 	while (!m_objects.empty())
 	{
@@ -818,9 +726,9 @@ void PrusaObjectDataViewModel::DeleteAll()
 	}
 }
 
-void PrusaObjectDataViewModel::DeleteChildren(wxDataViewItem& parent)
+void ObjectDataViewModel::DeleteChildren(wxDataViewItem& parent)
 {
-    PrusaObjectDataViewModelNode *root = (PrusaObjectDataViewModelNode*)parent.GetID();
+    ObjectDataViewModelNode *root = (ObjectDataViewModelNode*)parent.GetID();
     if (!root)      // happens if item.IsOk()==false
         return;
 
@@ -850,9 +758,9 @@ void PrusaObjectDataViewModel::DeleteChildren(wxDataViewItem& parent)
 #endif //__WXGTK__
 }
 
-void PrusaObjectDataViewModel::DeleteVolumeChildren(wxDataViewItem& parent)
+void ObjectDataViewModel::DeleteVolumeChildren(wxDataViewItem& parent)
 {
-    PrusaObjectDataViewModelNode *root = (PrusaObjectDataViewModelNode*)parent.GetID();
+    ObjectDataViewModelNode *root = (ObjectDataViewModelNode*)parent.GetID();
     if (!root)      // happens if item.IsOk()==false
         return;
 
@@ -884,9 +792,9 @@ void PrusaObjectDataViewModel::DeleteVolumeChildren(wxDataViewItem& parent)
 #endif //__WXGTK__
 }
 
-void PrusaObjectDataViewModel::DeleteSettings(const wxDataViewItem& parent)
+void ObjectDataViewModel::DeleteSettings(const wxDataViewItem& parent)
 {
-    PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)parent.GetID();
+    ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)parent.GetID();
     if (!node) return;
 
     // if volume has a "settings"item, than delete it before volume deleting
@@ -899,7 +807,7 @@ void PrusaObjectDataViewModel::DeleteSettings(const wxDataViewItem& parent)
     }
 }
 
-wxDataViewItem PrusaObjectDataViewModel::GetItemById(int obj_idx)
+wxDataViewItem ObjectDataViewModel::GetItemById(int obj_idx)
 {
 	if (obj_idx >= m_objects.size())
 	{
@@ -910,7 +818,7 @@ wxDataViewItem PrusaObjectDataViewModel::GetItemById(int obj_idx)
 }
 
 
-wxDataViewItem PrusaObjectDataViewModel::GetItemByVolumeId(int obj_idx, int volume_idx)
+wxDataViewItem ObjectDataViewModel::GetItemByVolumeId(int obj_idx, int volume_idx)
 {
 	if (obj_idx >= m_objects.size() || obj_idx < 0) {
 		printf("Error! Out of objects range.\n");
@@ -934,7 +842,7 @@ wxDataViewItem PrusaObjectDataViewModel::GetItemByVolumeId(int obj_idx, int volu
     return wxDataViewItem(0);
 }
 
-wxDataViewItem PrusaObjectDataViewModel::GetItemByInstanceId(int obj_idx, int inst_idx)
+wxDataViewItem ObjectDataViewModel::GetItemByInstanceId(int obj_idx, int inst_idx)
 {
     if (obj_idx >= m_objects.size() || obj_idx < 0) {
         printf("Error! Out of objects range.\n");
@@ -945,7 +853,7 @@ wxDataViewItem PrusaObjectDataViewModel::GetItemByInstanceId(int obj_idx, int in
     if (!instances_item)
         return wxDataViewItem(0);
 
-    auto parent = (PrusaObjectDataViewModelNode*)instances_item.GetID();;
+    auto parent = (ObjectDataViewModelNode*)instances_item.GetID();;
     for (size_t i = 0; i < parent->GetChildCount(); i++)
         if (parent->GetNthChild(i)->m_idx == inst_idx)
             return wxDataViewItem(parent->GetNthChild(i));
@@ -953,11 +861,11 @@ wxDataViewItem PrusaObjectDataViewModel::GetItemByInstanceId(int obj_idx, int in
     return wxDataViewItem(0);
 }
 
-int PrusaObjectDataViewModel::GetIdByItem(const wxDataViewItem& item) const
+int ObjectDataViewModel::GetIdByItem(const wxDataViewItem& item) const
 {
 	wxASSERT(item.IsOk());
 
-	PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+	ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
 	auto it = find(m_objects.begin(), m_objects.end(), node);
 	if (it == m_objects.end())
 		return -1;
@@ -965,44 +873,44 @@ int PrusaObjectDataViewModel::GetIdByItem(const wxDataViewItem& item) const
 	return it - m_objects.begin();
 }
 
-int PrusaObjectDataViewModel::GetIdByItemAndType(const wxDataViewItem& item, const ItemType type) const
+int ObjectDataViewModel::GetIdByItemAndType(const wxDataViewItem& item, const ItemType type) const
 {
 	wxASSERT(item.IsOk());
 
-	PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+	ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
 	if (!node || node->m_type != type)
 		return -1;
 	return node->GetIdx();
 }
 
-int PrusaObjectDataViewModel::GetObjectIdByItem(const wxDataViewItem& item) const
+int ObjectDataViewModel::GetObjectIdByItem(const wxDataViewItem& item) const
 {
     return GetIdByItem(GetTopParent(item));
 }
 
-int PrusaObjectDataViewModel::GetVolumeIdByItem(const wxDataViewItem& item) const
+int ObjectDataViewModel::GetVolumeIdByItem(const wxDataViewItem& item) const
 {
     return GetIdByItemAndType(item, itVolume);
 }
 
-int PrusaObjectDataViewModel::GetInstanceIdByItem(const wxDataViewItem& item) const 
+int ObjectDataViewModel::GetInstanceIdByItem(const wxDataViewItem& item) const 
 {
     return GetIdByItemAndType(item, itInstance);
 }
 
-void PrusaObjectDataViewModel::GetItemInfo(const wxDataViewItem& item, ItemType& type, int& obj_idx, int& idx)
+void ObjectDataViewModel::GetItemInfo(const wxDataViewItem& item, ItemType& type, int& obj_idx, int& idx)
 {
     wxASSERT(item.IsOk());
     type = itUndef;
 
-    PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+    ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
     if (!node || node->GetIdx() <-1 || node->GetIdx() ==-1 && !(node->GetType() & (itObject | itSettings | itInstanceRoot)))
         return;
 
     idx = node->GetIdx();
     type = node->GetType();
 
-    PrusaObjectDataViewModelNode *parent_node = node->GetParent();
+    ObjectDataViewModelNode *parent_node = node->GetParent();
     if (!parent_node) return;
     if (type == itInstance)
         parent_node = node->GetParent()->GetParent();
@@ -1015,7 +923,7 @@ void PrusaObjectDataViewModel::GetItemInfo(const wxDataViewItem& item, ItemType&
         type = itUndef;
 }
 
-int PrusaObjectDataViewModel::GetRowByItem(const wxDataViewItem& item) const
+int ObjectDataViewModel::GetRowByItem(const wxDataViewItem& item) const
 {
     if (m_objects.empty())
         return -1;
@@ -1031,7 +939,7 @@ int PrusaObjectDataViewModel::GetRowByItem(const wxDataViewItem& item) const
         for (int j = 0; j < m_objects[i]->GetChildCount(); j++)
         {
             row_num++;
-            PrusaObjectDataViewModelNode* cur_node = m_objects[i]->GetNthChild(j);
+            ObjectDataViewModelNode* cur_node = m_objects[i]->GetNthChild(j);
             if (item == wxDataViewItem(cur_node))
                 return row_num;
 
@@ -1053,30 +961,30 @@ int PrusaObjectDataViewModel::GetRowByItem(const wxDataViewItem& item) const
     return -1;
 }
 
-wxString PrusaObjectDataViewModel::GetName(const wxDataViewItem &item) const
+wxString ObjectDataViewModel::GetName(const wxDataViewItem &item) const
 {
-	PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+	ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
 	if (!node)      // happens if item.IsOk()==false
 		return wxEmptyString;
 
 	return node->m_name;
 }
 
-wxBitmap& PrusaObjectDataViewModel::GetBitmap(const wxDataViewItem &item) const
+wxBitmap& ObjectDataViewModel::GetBitmap(const wxDataViewItem &item) const
 {
-    PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+    ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
     return node->m_bmp;
 }
 
-void PrusaObjectDataViewModel::GetValue(wxVariant &variant, const wxDataViewItem &item, unsigned int col) const
+void ObjectDataViewModel::GetValue(wxVariant &variant, const wxDataViewItem &item, unsigned int col) const
 {
 	wxASSERT(item.IsOk());
 
-	PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+	ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
 	switch (col)
 	{
 	case 0:
-        variant << PrusaDataViewBitmapText(node->m_name, node->m_bmp);
+        variant << DataViewBitmapText(node->m_name, node->m_bmp);
 		break;
 	case 1:
 		variant = node->m_extruder;
@@ -1089,83 +997,37 @@ void PrusaObjectDataViewModel::GetValue(wxVariant &variant, const wxDataViewItem
 	}
 }
 
-bool PrusaObjectDataViewModel::SetValue(const wxVariant &variant, const wxDataViewItem &item, unsigned int col)
+bool ObjectDataViewModel::SetValue(const wxVariant &variant, const wxDataViewItem &item, unsigned int col)
 {
 	wxASSERT(item.IsOk());
 
-	PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+	ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
 	return node->SetValue(variant, col);
 }
 
-bool PrusaObjectDataViewModel::SetValue(const wxVariant &variant, const int item_idx, unsigned int col)
+bool ObjectDataViewModel::SetValue(const wxVariant &variant, const int item_idx, unsigned int col)
 {
 	if (item_idx < 0 || item_idx >= m_objects.size())
 		return false;
 
 	return m_objects[item_idx]->SetValue(variant, col);
 }
-/*
-wxDataViewItem PrusaObjectDataViewModel::MoveChildUp(const wxDataViewItem &item)
-{
-	auto ret_item = wxDataViewItem(0);
-	wxASSERT(item.IsOk());
-	PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
-	if (!node)      // happens if item.IsOk()==false
-		return ret_item;
 
-	auto node_parent = node->GetParent();
-	if (!node_parent) // If isn't part, but object
-		return ret_item;
-
-	auto volume_id = node->GetVolumeId();
-	if (0 < volume_id && volume_id < node_parent->GetChildCount()) {
-		node_parent->SwapChildrens(volume_id - 1, volume_id);
-		ret_item = wxDataViewItem(node_parent->GetNthChild(volume_id - 1));
-		ItemChanged(item);
-		ItemChanged(ret_item);
-	}
-	else
-		ret_item = wxDataViewItem(node_parent->GetNthChild(0));
-	return ret_item;
-}
-
-wxDataViewItem PrusaObjectDataViewModel::MoveChildDown(const wxDataViewItem &item)
-{
-	auto ret_item = wxDataViewItem(0);
-	wxASSERT(item.IsOk());
-	PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
-	if (!node)      // happens if item.IsOk()==false
-		return ret_item;
-
-	auto node_parent = node->GetParent();
-	if (!node_parent) // If isn't part, but object
-		return ret_item;
-
-	auto volume_id = node->GetVolumeId();
-	if (0 <= volume_id && volume_id+1 < node_parent->GetChildCount()) {
-		node_parent->SwapChildrens(volume_id + 1, volume_id);
-		ret_item = wxDataViewItem(node_parent->GetNthChild(volume_id + 1));
-		ItemChanged(item);
-		ItemChanged(ret_item);
-	}
-	else
-		ret_item = wxDataViewItem(node_parent->GetNthChild(node_parent->GetChildCount()-1));
-	return ret_item;
-}
-*/
-wxDataViewItem PrusaObjectDataViewModel::ReorganizeChildren(int current_volume_id, int new_volume_id, const wxDataViewItem &parent)
+wxDataViewItem ObjectDataViewModel::ReorganizeChildren( const int current_volume_id, 
+                                                        const int new_volume_id, 
+                                                        const wxDataViewItem &parent)
 {
     auto ret_item = wxDataViewItem(0);
     if (current_volume_id == new_volume_id)
         return ret_item;
     wxASSERT(parent.IsOk());
-    PrusaObjectDataViewModelNode *node_parent = (PrusaObjectDataViewModelNode*)parent.GetID();
+    ObjectDataViewModelNode *node_parent = (ObjectDataViewModelNode*)parent.GetID();
     if (!node_parent)      // happens if item.IsOk()==false
         return ret_item;
 
     const size_t shift = node_parent->GetChildren().Item(0)->m_type == itSettings ? 1 : 0;
 
-    PrusaObjectDataViewModelNode *deleted_node = node_parent->GetNthChild(current_volume_id+shift);
+    ObjectDataViewModelNode *deleted_node = node_parent->GetNthChild(current_volume_id+shift);
     node_parent->GetChildren().Remove(deleted_node);
     ItemDeleted(parent, wxDataViewItem(deleted_node));
     node_parent->Insert(deleted_node, new_volume_id+shift);
@@ -1184,22 +1046,22 @@ wxDataViewItem PrusaObjectDataViewModel::ReorganizeChildren(int current_volume_i
     return wxDataViewItem(node_parent->GetNthChild(new_volume_id+shift));
 }
 
-bool PrusaObjectDataViewModel::IsEnabled(const wxDataViewItem &item, unsigned int col) const
+bool ObjectDataViewModel::IsEnabled(const wxDataViewItem &item, unsigned int col) const
 {
     wxASSERT(item.IsOk());
-    PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+    ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
 
     // disable extruder selection for the non "itObject|itVolume" item
     return !(col == 1 && node->m_extruder.IsEmpty());
 }
 
-wxDataViewItem PrusaObjectDataViewModel::GetParent(const wxDataViewItem &item) const
+wxDataViewItem ObjectDataViewModel::GetParent(const wxDataViewItem &item) const
 {
 	// the invisible root node has no parent
 	if (!item.IsOk())
 		return wxDataViewItem(0);
 
-	PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+	ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
 
 	// objects nodes has no parent too
     if (node->m_type == itObject)
@@ -1208,17 +1070,17 @@ wxDataViewItem PrusaObjectDataViewModel::GetParent(const wxDataViewItem &item) c
 	return wxDataViewItem((void*)node->GetParent());
 }
 
-wxDataViewItem PrusaObjectDataViewModel::GetTopParent(const wxDataViewItem &item) const
+wxDataViewItem ObjectDataViewModel::GetTopParent(const wxDataViewItem &item) const
 {
 	// the invisible root node has no parent
 	if (!item.IsOk())
 		return wxDataViewItem(0);
 
-	PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+	ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
     if (node->m_type == itObject)
         return item;
 
-    PrusaObjectDataViewModelNode *parent_node = node->GetParent();
+    ObjectDataViewModelNode *parent_node = node->GetParent();
     while (parent_node->m_type != itObject)
     {
         node = parent_node;
@@ -1228,19 +1090,19 @@ wxDataViewItem PrusaObjectDataViewModel::GetTopParent(const wxDataViewItem &item
     return wxDataViewItem((void*)parent_node);
 }
 
-bool PrusaObjectDataViewModel::IsContainer(const wxDataViewItem &item) const
+bool ObjectDataViewModel::IsContainer(const wxDataViewItem &item) const
 {
 	// the invisible root node can have children
 	if (!item.IsOk())
 		return true;
 
-	PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+	ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
 	return node->IsContainer();
 }
 
-unsigned int PrusaObjectDataViewModel::GetChildren(const wxDataViewItem &parent, wxDataViewItemArray &array) const
+unsigned int ObjectDataViewModel::GetChildren(const wxDataViewItem &parent, wxDataViewItemArray &array) const
 {
-	PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)parent.GetID();
+	ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)parent.GetID();
 	if (!node)
 	{
 		for (auto object : m_objects)
@@ -1256,16 +1118,16 @@ unsigned int PrusaObjectDataViewModel::GetChildren(const wxDataViewItem &parent,
 	unsigned int count = node->GetChildren().GetCount();
 	for (unsigned int pos = 0; pos < count; pos++)
 	{
-		PrusaObjectDataViewModelNode *child = node->GetChildren().Item(pos);
+		ObjectDataViewModelNode *child = node->GetChildren().Item(pos);
 		array.Add(wxDataViewItem((void*)child));
 	}
 
 	return count;
 }
 
-void PrusaObjectDataViewModel::GetAllChildren(const wxDataViewItem &parent, wxDataViewItemArray &array) const
+void ObjectDataViewModel::GetAllChildren(const wxDataViewItem &parent, wxDataViewItemArray &array) const
 {
-	PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)parent.GetID();
+	ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)parent.GetID();
 	if (!node) {
 		for (auto object : m_objects)
 			array.Add(wxDataViewItem((void*)object));
@@ -1275,7 +1137,7 @@ void PrusaObjectDataViewModel::GetAllChildren(const wxDataViewItem &parent, wxDa
     else {
         const size_t count = node->GetChildren().GetCount();
         for (size_t pos = 0; pos < count; pos++) {
-            PrusaObjectDataViewModelNode *child = node->GetChildren().Item(pos);
+            ObjectDataViewModelNode *child = node->GetChildren().Item(pos);
             array.Add(wxDataViewItem((void*)child));
         }
     }
@@ -1289,20 +1151,20 @@ void PrusaObjectDataViewModel::GetAllChildren(const wxDataViewItem &parent, wxDa
     }
 }
 
-ItemType PrusaObjectDataViewModel::GetItemType(const wxDataViewItem &item) const 
+ItemType ObjectDataViewModel::GetItemType(const wxDataViewItem &item) const 
 {
     if (!item.IsOk())
         return itUndef;
-    PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+    ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
     return node->m_type;
 }
 
-wxDataViewItem PrusaObjectDataViewModel::GetItemByType(const wxDataViewItem &parent_item, ItemType type) const 
+wxDataViewItem ObjectDataViewModel::GetItemByType(const wxDataViewItem &parent_item, ItemType type) const 
 {
     if (!parent_item.IsOk())
         return wxDataViewItem(0);
 
-    PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)parent_item.GetID();
+    ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)parent_item.GetID();
     if (node->GetChildCount() == 0)
         return wxDataViewItem(0);
 
@@ -1314,60 +1176,81 @@ wxDataViewItem PrusaObjectDataViewModel::GetItemByType(const wxDataViewItem &par
     return wxDataViewItem(0);
 }
 
-wxDataViewItem PrusaObjectDataViewModel::GetSettingsItem(const wxDataViewItem &item) const
+wxDataViewItem ObjectDataViewModel::GetSettingsItem(const wxDataViewItem &item) const
 {
     return GetItemByType(item, itSettings);
 }
 
-wxDataViewItem PrusaObjectDataViewModel::GetInstanceRootItem(const wxDataViewItem &item) const
+wxDataViewItem ObjectDataViewModel::GetInstanceRootItem(const wxDataViewItem &item) const
 {
     return GetItemByType(item, itInstanceRoot);
 }
 
-bool PrusaObjectDataViewModel::IsSettingsItem(const wxDataViewItem &item) const
+bool ObjectDataViewModel::IsSettingsItem(const wxDataViewItem &item) const
 {
     if (!item.IsOk())
         return false;
-    PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+    ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
     return node->m_type == itSettings;
 }
 
-
-
-void PrusaObjectDataViewModel::UpdateSettingsDigest(const wxDataViewItem &item, 
+void ObjectDataViewModel::UpdateSettingsDigest(const wxDataViewItem &item, 
                                                     const std::vector<std::string>& categories)
 {
     if (!item.IsOk()) return;
-    PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+    ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
     if (!node->update_settings_digest(categories))
         return;
     ItemChanged(item);
 }
 
-void PrusaObjectDataViewModel::SetVolumeType(const wxDataViewItem &item, const Slic3r::ModelVolumeType type)
+void ObjectDataViewModel::SetVolumeType(const wxDataViewItem &item, const Slic3r::ModelVolumeType type)
 {
     if (!item.IsOk() || GetItemType(item) != itVolume) 
         return;
 
-    PrusaObjectDataViewModelNode *node = (PrusaObjectDataViewModelNode*)item.GetID();
+    ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
     node->SetBitmap(*m_volume_bmps[int(type)]);
     ItemChanged(item);
 }
 
+void ObjectDataViewModel::Rescale()
+{
+    wxDataViewItemArray all_items;
+    GetAllChildren(wxDataViewItem(0), all_items);
+
+    for (wxDataViewItem item : all_items)
+    {
+        if (!item.IsOk())
+            continue;
+
+        ObjectDataViewModelNode *node = (ObjectDataViewModelNode*)item.GetID();
+        node->msw_rescale();
+
+        if (node->m_type & itVolume)
+            node->m_bmp = *m_volume_bmps[node->volume_type()];
+
+        if (node->m_type & itObject && node->m_bmp.IsOk())
+            node->m_bmp = create_scaled_bitmap(nullptr, "exclamation");
+
+        ItemChanged(item);
+    }
+}
+
 //-----------------------------------------------------------------------------
 // PrusaDataViewBitmapText
 //-----------------------------------------------------------------------------
 
-wxIMPLEMENT_DYNAMIC_CLASS(PrusaDataViewBitmapText, wxObject)
+wxIMPLEMENT_DYNAMIC_CLASS(DataViewBitmapText, wxObject)
 
-IMPLEMENT_VARIANT_OBJECT(PrusaDataViewBitmapText)
+IMPLEMENT_VARIANT_OBJECT(DataViewBitmapText)
 
 // ---------------------------------------------------------
-// PrusaIconTextRenderer
+// BitmapTextRenderer
 // ---------------------------------------------------------
 
 #if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
-PrusaBitmapTextRenderer::PrusaBitmapTextRenderer(wxDataViewCellMode mode /*= wxDATAVIEW_CELL_EDITABLE*/, 
+BitmapTextRenderer::BitmapTextRenderer(wxDataViewCellMode mode /*= wxDATAVIEW_CELL_EDITABLE*/, 
                                                  int align /*= wxDVR_DEFAULT_ALIGNMENT*/): 
 wxDataViewRenderer(wxT("PrusaDataViewBitmapText"), mode, align)
 {
@@ -1376,25 +1259,25 @@ wxDataViewRenderer(wxT("PrusaDataViewBitmapText"), mode, align)
 }
 #endif // ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
 
-bool PrusaBitmapTextRenderer::SetValue(const wxVariant &value)
+bool BitmapTextRenderer::SetValue(const wxVariant &value)
 {
     m_value << value;
     return true;
 }
 
-bool PrusaBitmapTextRenderer::GetValue(wxVariant& WXUNUSED(value)) const
+bool BitmapTextRenderer::GetValue(wxVariant& WXUNUSED(value)) const
 {
     return false;
 }
 
 #if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING && wxUSE_ACCESSIBILITY
-wxString PrusaBitmapTextRenderer::GetAccessibleDescription() const
+wxString BitmapTextRenderer::GetAccessibleDescription() const
 {
     return m_value.GetText();
 }
 #endif // wxUSE_ACCESSIBILITY && ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
 
-bool PrusaBitmapTextRenderer::Render(wxRect rect, wxDC *dc, int state)
+bool BitmapTextRenderer::Render(wxRect rect, wxDC *dc, int state)
 {
     int xoffset = 0;
 
@@ -1410,7 +1293,7 @@ bool PrusaBitmapTextRenderer::Render(wxRect rect, wxDC *dc, int state)
     return true;
 }
 
-wxSize PrusaBitmapTextRenderer::GetSize() const
+wxSize BitmapTextRenderer::GetSize() const
 {
     if (!m_value.GetText().empty())
     {
@@ -1424,15 +1307,15 @@ wxSize PrusaBitmapTextRenderer::GetSize() const
 }
 
 
-wxWindow* PrusaBitmapTextRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelRect, const wxVariant& value)
+wxWindow* BitmapTextRenderer::CreateEditorCtrl(wxWindow* parent, wxRect labelRect, const wxVariant& value)
 {
     wxDataViewCtrl* const dv_ctrl = GetOwner()->GetOwner();
-    PrusaObjectDataViewModel* const model = dynamic_cast<PrusaObjectDataViewModel*>(dv_ctrl->GetModel());
+    ObjectDataViewModel* const model = dynamic_cast<ObjectDataViewModel*>(dv_ctrl->GetModel());
 
     if ( !(model->GetItemType(dv_ctrl->GetSelection()) & (itVolume | itObject)) )
         return nullptr;
 
-    PrusaDataViewBitmapText data;
+    DataViewBitmapText data;
     data << value;
 
     m_was_unusable_symbol = false;
@@ -1452,7 +1335,7 @@ wxWindow* PrusaBitmapTextRenderer::CreateEditorCtrl(wxWindow* parent, wxRect lab
     return text_editor;
 }
 
-bool PrusaBitmapTextRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant& value)
+bool BitmapTextRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant& value)
 {
     wxTextCtrl* text_editor = wxDynamicCast(ctrl, wxTextCtrl);
     if (!text_editor || text_editor->GetValue().IsEmpty())
@@ -1471,7 +1354,7 @@ bool PrusaBitmapTextRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant&
     wxVariant valueOld;
     GetView()->GetModel()->GetValue(valueOld, m_item, 0); 
     
-    PrusaDataViewBitmapText bmpText;
+    DataViewBitmapText bmpText;
     bmpText << valueOld;
 
     // But replace the text with the value entered by user.
@@ -1482,19 +1365,19 @@ bool PrusaBitmapTextRenderer::GetValueFromEditorCtrl(wxWindow* ctrl, wxVariant&
 }
 
 // ----------------------------------------------------------------------------
-// PrusaDoubleSlider
+// DoubleSlider
 // ----------------------------------------------------------------------------
-PrusaDoubleSlider::PrusaDoubleSlider(wxWindow *parent,
-                                        wxWindowID id,
-                                        int lowerValue, 
-                                        int higherValue, 
-                                        int minValue, 
-                                        int maxValue,
-                                        const wxPoint& pos,
-                                        const wxSize& size,
-                                        long style,
-                                        const wxValidator& val,
-                                        const wxString& name) : 
+DoubleSlider::DoubleSlider( wxWindow *parent,
+                            wxWindowID id,
+                            int lowerValue, 
+                            int higherValue, 
+                            int minValue, 
+                            int maxValue,
+                            const wxPoint& pos,
+                            const wxSize& size,
+                            long style,
+                            const wxValidator& val,
+                            const wxString& name) : 
     wxControl(parent, id, pos, size, wxWANTS_CHARS | wxBORDER_NONE),
     m_lower_value(lowerValue), m_higher_value (higherValue), 
     m_min_value(minValue), m_max_value(maxValue),
@@ -1506,39 +1389,39 @@ PrusaDoubleSlider::PrusaDoubleSlider(wxWindow *parent,
     if (!is_osx)
         SetDoubleBuffered(true);// SetDoubleBuffered exists on Win and Linux/GTK, but is missing on OSX
 
-    m_bmp_thumb_higher = wxBitmap(style == wxSL_HORIZONTAL ? create_scaled_bitmap(this, "right_half_circle.png") : create_scaled_bitmap(this, "up_half_circle.png",   16, true));
-    m_bmp_thumb_lower  = wxBitmap(style == wxSL_HORIZONTAL ? create_scaled_bitmap(this, "left_half_circle.png" ) : create_scaled_bitmap(this, "down_half_circle.png", 16, true));
-    m_thumb_size = m_bmp_thumb_lower.GetSize();
+    m_bmp_thumb_higher = (style == wxSL_HORIZONTAL ? ScalableBitmap(this, "right_half_circle.png") : ScalableBitmap(this, "up_half_circle.png",   16, true));
+    m_bmp_thumb_lower  = (style == wxSL_HORIZONTAL ? ScalableBitmap(this, "left_half_circle.png" ) : ScalableBitmap(this, "down_half_circle.png", 16, true));
+    m_thumb_size = m_bmp_thumb_lower.bmp().GetSize();
 
-    m_bmp_add_tick_on  = create_scaled_bitmap(this, "colorchange_add_on.png");
-    m_bmp_add_tick_off = create_scaled_bitmap(this, "colorchange_add_off.png");
-    m_bmp_del_tick_on  = create_scaled_bitmap(this, "colorchange_delete_on.png");
-    m_bmp_del_tick_off = create_scaled_bitmap(this, "colorchange_delete_off.png");
-    m_tick_icon_dim = m_bmp_add_tick_on.GetSize().x;
+    m_bmp_add_tick_on  = ScalableBitmap(this, "colorchange_add_on.png");
+    m_bmp_add_tick_off = ScalableBitmap(this, "colorchange_add_off.png");
+    m_bmp_del_tick_on  = ScalableBitmap(this, "colorchange_delete_on.png");
+    m_bmp_del_tick_off = ScalableBitmap(this, "colorchange_delete_off.png");
+    m_tick_icon_dim = m_bmp_add_tick_on.bmp().GetSize().x;
 
-    m_bmp_one_layer_lock_on    = create_scaled_bitmap(this, "one_layer_lock_on.png");
-    m_bmp_one_layer_lock_off   = create_scaled_bitmap(this, "one_layer_lock_off.png");
-    m_bmp_one_layer_unlock_on  = create_scaled_bitmap(this, "one_layer_unlock_on.png");
-    m_bmp_one_layer_unlock_off = create_scaled_bitmap(this, "one_layer_unlock_off.png");
-    m_lock_icon_dim = m_bmp_one_layer_lock_on.GetSize().x;
+    m_bmp_one_layer_lock_on    = ScalableBitmap(this, "one_layer_lock_on.png");
+    m_bmp_one_layer_lock_off   = ScalableBitmap(this, "one_layer_lock_off.png");
+    m_bmp_one_layer_unlock_on  = ScalableBitmap(this, "one_layer_unlock_on.png");
+    m_bmp_one_layer_unlock_off = ScalableBitmap(this, "one_layer_unlock_off.png");
+    m_lock_icon_dim = m_bmp_one_layer_lock_on.bmp().GetSize().x;
 
     m_selection = ssUndef;
 
     // slider events
-    Bind(wxEVT_PAINT,       &PrusaDoubleSlider::OnPaint,    this);
-    Bind(wxEVT_LEFT_DOWN,   &PrusaDoubleSlider::OnLeftDown, this);
-    Bind(wxEVT_MOTION,      &PrusaDoubleSlider::OnMotion,   this);
-    Bind(wxEVT_LEFT_UP,     &PrusaDoubleSlider::OnLeftUp,   this);
-    Bind(wxEVT_MOUSEWHEEL,  &PrusaDoubleSlider::OnWheel,    this);
-    Bind(wxEVT_ENTER_WINDOW,&PrusaDoubleSlider::OnEnterWin, this);
-    Bind(wxEVT_LEAVE_WINDOW,&PrusaDoubleSlider::OnLeaveWin, this);
-    Bind(wxEVT_KEY_DOWN,    &PrusaDoubleSlider::OnKeyDown,  this);
-    Bind(wxEVT_KEY_UP,      &PrusaDoubleSlider::OnKeyUp,    this);
-    Bind(wxEVT_RIGHT_DOWN,  &PrusaDoubleSlider::OnRightDown,this);
-    Bind(wxEVT_RIGHT_UP,    &PrusaDoubleSlider::OnRightUp,  this);
+    Bind(wxEVT_PAINT,       &DoubleSlider::OnPaint,    this);
+    Bind(wxEVT_LEFT_DOWN,   &DoubleSlider::OnLeftDown, this);
+    Bind(wxEVT_MOTION,      &DoubleSlider::OnMotion,   this);
+    Bind(wxEVT_LEFT_UP,     &DoubleSlider::OnLeftUp,   this);
+    Bind(wxEVT_MOUSEWHEEL,  &DoubleSlider::OnWheel,    this);
+    Bind(wxEVT_ENTER_WINDOW,&DoubleSlider::OnEnterWin, this);
+    Bind(wxEVT_LEAVE_WINDOW,&DoubleSlider::OnLeaveWin, this);
+    Bind(wxEVT_KEY_DOWN,    &DoubleSlider::OnKeyDown,  this);
+    Bind(wxEVT_KEY_UP,      &DoubleSlider::OnKeyUp,    this);
+    Bind(wxEVT_RIGHT_DOWN,  &DoubleSlider::OnRightDown,this);
+    Bind(wxEVT_RIGHT_UP,    &DoubleSlider::OnRightUp,  this);
 
     // control's view variables
-    SLIDER_MARGIN     = 4 + Slic3r::GUI::wxGetApp().em_unit();//(style == wxSL_HORIZONTAL ? m_bmp_thumb_higher.GetWidth() : m_bmp_thumb_higher.GetHeight());
+    SLIDER_MARGIN     = 4 + Slic3r::GUI::wxGetApp().em_unit();
 
     DARK_ORANGE_PEN   = wxPen(wxColour(253, 84, 2));
     ORANGE_PEN        = wxPen(wxColour(253, 126, 66));
@@ -1548,32 +1431,65 @@ PrusaDoubleSlider::PrusaDoubleSlider(wxWindow *parent,
     GREY_PEN          = wxPen(wxColour(164, 164, 164));
     LIGHT_GREY_PEN    = wxPen(wxColour(204, 204, 204));
 
-    line_pens = { &DARK_GREY_PEN, &GREY_PEN, &LIGHT_GREY_PEN };
-    segm_pens = { &DARK_ORANGE_PEN, &ORANGE_PEN, &LIGHT_ORANGE_PEN };
+    m_line_pens = { &DARK_GREY_PEN, &GREY_PEN, &LIGHT_GREY_PEN };
+    m_segm_pens = { &DARK_ORANGE_PEN, &ORANGE_PEN, &LIGHT_ORANGE_PEN };
 
     const wxFont& font = GetFont();
     m_font = is_osx ? font.Smaller().Smaller() : font.Smaller();
 }
 
-int PrusaDoubleSlider::GetActiveValue() const
+void DoubleSlider::msw_rescale()
+{
+    const wxFont& font = Slic3r::GUI::wxGetApp().normal_font();
+    m_font = is_osx ? font.Smaller().Smaller() : font.Smaller();
+
+    m_bmp_thumb_higher.msw_rescale();
+    m_bmp_thumb_lower .msw_rescale();
+    m_thumb_size = m_bmp_thumb_lower.bmp().GetSize();
+
+    m_bmp_add_tick_on .msw_rescale();
+    m_bmp_add_tick_off.msw_rescale();
+    m_bmp_del_tick_on .msw_rescale();
+    m_bmp_del_tick_off.msw_rescale();
+    m_tick_icon_dim = m_bmp_add_tick_on.bmp().GetSize().x;
+
+    m_bmp_one_layer_lock_on   .msw_rescale();
+    m_bmp_one_layer_lock_off  .msw_rescale();
+    m_bmp_one_layer_unlock_on .msw_rescale();
+    m_bmp_one_layer_unlock_off.msw_rescale();
+    m_lock_icon_dim = m_bmp_one_layer_lock_on.bmp().GetSize().x;
+
+    SLIDER_MARGIN = 4 + Slic3r::GUI::wxGetApp().em_unit();
+
+    SetMinSize(get_min_size());
+    GetParent()->Layout();
+}
+
+int DoubleSlider::GetActiveValue() const
 {
     return m_selection == ssLower ?
     m_lower_value : m_selection == ssHigher ?
                 m_higher_value : -1;
 }
 
-wxSize PrusaDoubleSlider::DoGetBestSize() const
+wxSize DoubleSlider::get_min_size() const 
+{
+    const int min_side = is_horizontal() ?
+        (is_osx ? 8 : 6) * Slic3r::GUI::wxGetApp().em_unit() :
+        /*(is_osx ? 10 : 8)*/10 * Slic3r::GUI::wxGetApp().em_unit();
+
+    return wxSize(min_side, min_side);
+}
+
+wxSize DoubleSlider::DoGetBestSize() const
 {
     const wxSize size = wxControl::DoGetBestSize();
     if (size.x > 1 && size.y > 1)
         return size;
-    const int new_size = is_horizontal() ? 
-                         (is_osx ? 8 : 6) * Slic3r::GUI::wxGetApp().em_unit() :
-                         (is_osx ? 10 : 8) * Slic3r::GUI::wxGetApp().em_unit();
-    return wxSize(new_size, new_size);
+    return get_min_size();
 }
 
-void PrusaDoubleSlider::SetLowerValue(const int lower_val)
+void DoubleSlider::SetLowerValue(const int lower_val)
 {
     m_selection = ssLower;
     m_lower_value = lower_val;
@@ -1586,7 +1502,7 @@ void PrusaDoubleSlider::SetLowerValue(const int lower_val)
     ProcessWindowEvent(e);
 }
 
-void PrusaDoubleSlider::SetHigherValue(const int higher_val)
+void DoubleSlider::SetHigherValue(const int higher_val)
 {
     m_selection = ssHigher;
     m_higher_value = higher_val;
@@ -1599,7 +1515,7 @@ void PrusaDoubleSlider::SetHigherValue(const int higher_val)
     ProcessWindowEvent(e);
 }
 
-void PrusaDoubleSlider::SetSelectionSpan(const int lower_val, const int higher_val)
+void DoubleSlider::SetSelectionSpan(const int lower_val, const int higher_val)
 {
     m_lower_value  = std::max(lower_val, m_min_value);
     m_higher_value = std::max(std::min(higher_val, m_max_value), m_lower_value);
@@ -1614,14 +1530,14 @@ void PrusaDoubleSlider::SetSelectionSpan(const int lower_val, const int higher_v
     ProcessWindowEvent(e);
 }
 
-void PrusaDoubleSlider::SetMaxValue(const int max_value)
+void DoubleSlider::SetMaxValue(const int max_value)
 {
     m_max_value = max_value;
     Refresh();
     Update();
 }
 
-void PrusaDoubleSlider::draw_scroll_line(wxDC& dc, const int lower_pos, const int higher_pos)
+void DoubleSlider::draw_scroll_line(wxDC& dc, const int lower_pos, const int higher_pos)
 {
     int width;
     int height;
@@ -1637,11 +1553,11 @@ void PrusaDoubleSlider::draw_scroll_line(wxDC& dc, const int lower_pos, const in
     wxCoord segm_end_x = is_horizontal() ? higher_pos : width*0.5 - 1;
     wxCoord segm_end_y = is_horizontal() ? height*0.5 - 1 : higher_pos-1;
 
-    for (int id = 0; id < line_pens.size(); id++)
+    for (int id = 0; id < m_line_pens.size(); id++)
     {
-        dc.SetPen(*line_pens[id]);
+        dc.SetPen(*m_line_pens[id]);
         dc.DrawLine(line_beg_x, line_beg_y, line_end_x, line_end_y);
-        dc.SetPen(*segm_pens[id]);
+        dc.SetPen(*m_segm_pens[id]);
         dc.DrawLine(segm_beg_x, segm_beg_y, segm_end_x, segm_end_y);
         if (is_horizontal())
             line_beg_y = line_end_y = segm_beg_y = segm_end_y += 1;
@@ -1650,7 +1566,7 @@ void PrusaDoubleSlider::draw_scroll_line(wxDC& dc, const int lower_pos, const in
     }
 }
 
-double PrusaDoubleSlider::get_scroll_step()
+double DoubleSlider::get_scroll_step()
 {
     const wxSize sz = get_size();
     const int& slider_len = m_style == wxSL_HORIZONTAL ? sz.x : sz.y;
@@ -1658,27 +1574,27 @@ double PrusaDoubleSlider::get_scroll_step()
 }
 
 // get position on the slider line from entered value
-wxCoord PrusaDoubleSlider::get_position_from_value(const int value)
+wxCoord DoubleSlider::get_position_from_value(const int value)
 {
     const double step = get_scroll_step();
     const int val = is_horizontal() ? value : m_max_value - value;
     return wxCoord(SLIDER_MARGIN + int(val*step + 0.5));
 }
 
-wxSize PrusaDoubleSlider::get_size()
+wxSize DoubleSlider::get_size()
 {
     int w, h;
     get_size(&w, &h);
     return wxSize(w, h);
 }
 
-void PrusaDoubleSlider::get_size(int *w, int *h)
+void DoubleSlider::get_size(int *w, int *h)
 {
     GetSize(w, h);
     is_horizontal() ? *w -= m_lock_icon_dim : *h -= m_lock_icon_dim;
 }
 
-double PrusaDoubleSlider::get_double_value(const SelectedSlider& selection)
+double DoubleSlider::get_double_value(const SelectedSlider& selection)
 {
     if (m_values.empty() || m_lower_value<0)
         return 0.0;
@@ -1689,7 +1605,7 @@ double PrusaDoubleSlider::get_double_value(const SelectedSlider& selection)
     return m_values[selection == ssLower ? m_lower_value : m_higher_value].second;
 }
 
-std::vector<double> PrusaDoubleSlider::GetTicksValues() const
+std::vector<double> DoubleSlider::GetTicksValues() const
 {
     std::vector<double> values;
 
@@ -1703,7 +1619,7 @@ std::vector<double> PrusaDoubleSlider::GetTicksValues() const
     return values;
 }
 
-void PrusaDoubleSlider::SetTicksValues(const std::vector<double>& heights)
+void DoubleSlider::SetTicksValues(const std::vector<double>& heights)
 {
     if (m_values.empty())
         return;
@@ -1725,7 +1641,7 @@ void PrusaDoubleSlider::SetTicksValues(const std::vector<double>& heights)
         wxPostEvent(this->GetParent(), wxCommandEvent(wxCUSTOMEVT_TICKSCHANGED));
 }
 
-void PrusaDoubleSlider::get_lower_and_higher_position(int& lower_pos, int& higher_pos)
+void DoubleSlider::get_lower_and_higher_position(int& lower_pos, int& higher_pos)
 {
     const double step = get_scroll_step();
     if (is_horizontal()) {
@@ -1738,7 +1654,7 @@ void PrusaDoubleSlider::get_lower_and_higher_position(int& lower_pos, int& highe
     }
 }
 
-void PrusaDoubleSlider::draw_focus_rect()
+void DoubleSlider::draw_focus_rect()
 {
     if (!m_is_focused) 
         return;
@@ -1750,7 +1666,7 @@ void PrusaDoubleSlider::draw_focus_rect()
     dc.DrawRectangle(1, 1, sz.x - 2, sz.y - 2);
 }
 
-void PrusaDoubleSlider::render()
+void DoubleSlider::render()
 {
     SetBackgroundColour(GetParent()->GetBackgroundColour());
     draw_focus_rect();
@@ -1783,12 +1699,13 @@ void PrusaDoubleSlider::render()
     draw_one_layer_icon(dc);
 }
 
-void PrusaDoubleSlider::draw_action_icon(wxDC& dc, const wxPoint pt_beg, const wxPoint pt_end)
+void DoubleSlider::draw_action_icon(wxDC& dc, const wxPoint pt_beg, const wxPoint pt_end)
 {
     const int tick = m_selection == ssLower ? m_lower_value : m_higher_value;
-    wxBitmap* icon = m_is_action_icon_focesed ? &m_bmp_add_tick_off : &m_bmp_add_tick_on;
+
+    wxBitmap& icon = m_is_action_icon_focesed ? m_bmp_add_tick_off.bmp() : m_bmp_add_tick_on.bmp();
     if (m_ticks.find(tick) != m_ticks.end())
-        icon = m_is_action_icon_focesed ? &m_bmp_del_tick_off : &m_bmp_del_tick_on;
+        icon = m_is_action_icon_focesed ? m_bmp_del_tick_off.bmp() : m_bmp_del_tick_on.bmp();
 
     wxCoord x_draw, y_draw;
     is_horizontal() ? x_draw = pt_beg.x - 0.5*m_tick_icon_dim : y_draw = pt_beg.y - 0.5*m_tick_icon_dim;
@@ -1797,13 +1714,13 @@ void PrusaDoubleSlider::draw_action_icon(wxDC& dc, const wxPoint pt_beg, const w
     else
         is_horizontal() ? y_draw = pt_beg.y - m_tick_icon_dim-2 : x_draw = pt_end.x + 3;
 
-    dc.DrawBitmap(*icon, x_draw, y_draw);
+    dc.DrawBitmap(icon, x_draw, y_draw);
 
     //update rect of the tick action icon
     m_rect_tick_action = wxRect(x_draw, y_draw, m_tick_icon_dim, m_tick_icon_dim);
 }
 
-void PrusaDoubleSlider::draw_info_line_with_icon(wxDC& dc, const wxPoint& pos, const SelectedSlider selection)
+void DoubleSlider::draw_info_line_with_icon(wxDC& dc, const wxPoint& pos, const SelectedSlider selection)
 {
     if (m_selection == selection) {
         //draw info line
@@ -1818,7 +1735,7 @@ void PrusaDoubleSlider::draw_info_line_with_icon(wxDC& dc, const wxPoint& pos, c
     }
 }
 
-wxString PrusaDoubleSlider::get_label(const SelectedSlider& selection) const
+wxString DoubleSlider::get_label(const SelectedSlider& selection) const
 {
     const int value = selection == ssLower ? m_lower_value : m_higher_value;
 
@@ -1833,7 +1750,7 @@ wxString PrusaDoubleSlider::get_label(const SelectedSlider& selection) const
     return wxString::Format("%s\n(%d)", str, m_values.empty() ? value : m_values[value].first);
 }
 
-void PrusaDoubleSlider::draw_thumb_text(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection) const
+void DoubleSlider::draw_thumb_text(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection) const
 {
     if ((m_is_one_layer || m_higher_value==m_lower_value) && selection != m_selection || !selection) 
         return;
@@ -1850,7 +1767,7 @@ void PrusaDoubleSlider::draw_thumb_text(wxDC& dc, const wxPoint& pos, const Sele
     dc.DrawText(label, text_pos);
 }
 
-void PrusaDoubleSlider::draw_thumb_item(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection)
+void DoubleSlider::draw_thumb_item(wxDC& dc, const wxPoint& pos, const SelectedSlider& selection)
 {
     wxCoord x_draw, y_draw;
     if (selection == ssLower) {
@@ -1873,13 +1790,13 @@ void PrusaDoubleSlider::draw_thumb_item(wxDC& dc, const wxPoint& pos, const Sele
             y_draw = pos.y - m_thumb_size.y;
         }
     }
-    dc.DrawBitmap(selection == ssLower ? m_bmp_thumb_lower : m_bmp_thumb_higher, x_draw, y_draw);
+    dc.DrawBitmap(selection == ssLower ? m_bmp_thumb_lower.bmp() : m_bmp_thumb_higher.bmp(), x_draw, y_draw);
 
     // Update thumb rect
     update_thumb_rect(x_draw, y_draw, selection);
 }
 
-void PrusaDoubleSlider::draw_thumb(wxDC& dc, const wxCoord& pos_coord, const SelectedSlider& selection)
+void DoubleSlider::draw_thumb(wxDC& dc, const wxCoord& pos_coord, const SelectedSlider& selection)
 {
     //calculate thumb position on slider line
     int width, height;
@@ -1896,7 +1813,7 @@ void PrusaDoubleSlider::draw_thumb(wxDC& dc, const wxCoord& pos_coord, const Sel
     draw_thumb_text(dc, pos, selection);
 }
 
-void PrusaDoubleSlider::draw_thumbs(wxDC& dc, const wxCoord& lower_pos, const wxCoord& higher_pos)
+void DoubleSlider::draw_thumbs(wxDC& dc, const wxCoord& lower_pos, const wxCoord& higher_pos)
 {
     //calculate thumb position on slider line
     int width, height;
@@ -1920,7 +1837,7 @@ void PrusaDoubleSlider::draw_thumbs(wxDC& dc, const wxCoord& lower_pos, const wx
     draw_thumb_text(dc, pos_l, ssLower);
 }
 
-void PrusaDoubleSlider::draw_ticks(wxDC& dc)
+void DoubleSlider::draw_ticks(wxDC& dc)
 {
     dc.SetPen(m_is_enabled_tick_manipulation ? DARK_GREY_PEN : LIGHT_GREY_PEN );
     int height, width;
@@ -1937,7 +1854,7 @@ void PrusaDoubleSlider::draw_ticks(wxDC& dc)
     }
 }
 
-void PrusaDoubleSlider::draw_colored_band(wxDC& dc)
+void DoubleSlider::draw_colored_band(wxDC& dc)
 {
     int height, width;
     get_size(&width, &height);
@@ -1987,11 +1904,11 @@ void PrusaDoubleSlider::draw_colored_band(wxDC& dc)
     }
 }
 
-void PrusaDoubleSlider::draw_one_layer_icon(wxDC& dc)
+void DoubleSlider::draw_one_layer_icon(wxDC& dc)
 {
-    wxBitmap* icon = m_is_one_layer ?
-                     m_is_one_layer_icon_focesed ? &m_bmp_one_layer_lock_off : &m_bmp_one_layer_lock_on :
-                     m_is_one_layer_icon_focesed ? &m_bmp_one_layer_unlock_off : &m_bmp_one_layer_unlock_on;
+    const wxBitmap& icon = m_is_one_layer ?
+                     m_is_one_layer_icon_focesed ? m_bmp_one_layer_lock_off.bmp()   : m_bmp_one_layer_lock_on.bmp() :
+                     m_is_one_layer_icon_focesed ? m_bmp_one_layer_unlock_off.bmp() : m_bmp_one_layer_unlock_on.bmp();
 
     int width, height;
     get_size(&width, &height);
@@ -2000,13 +1917,13 @@ void PrusaDoubleSlider::draw_one_layer_icon(wxDC& dc)
     is_horizontal() ? x_draw = width-2 : x_draw = 0.5*width - 0.5*m_lock_icon_dim;
     is_horizontal() ? y_draw = 0.5*height - 0.5*m_lock_icon_dim : y_draw = height-2;
 
-    dc.DrawBitmap(*icon, x_draw, y_draw);
+    dc.DrawBitmap(icon, x_draw, y_draw);
 
     //update rect of the lock/unlock icon
     m_rect_one_layer_icon = wxRect(x_draw, y_draw, m_lock_icon_dim, m_lock_icon_dim);
 }
 
-void PrusaDoubleSlider::update_thumb_rect(const wxCoord& begin_x, const wxCoord& begin_y, const SelectedSlider& selection)
+void DoubleSlider::update_thumb_rect(const wxCoord& begin_x, const wxCoord& begin_y, const SelectedSlider& selection)
 {
     const wxRect& rect = wxRect(begin_x, begin_y, m_thumb_size.x, m_thumb_size.y);
     if (selection == ssLower)
@@ -2015,7 +1932,7 @@ void PrusaDoubleSlider::update_thumb_rect(const wxCoord& begin_x, const wxCoord&
         m_rect_higher_thumb = rect;
 }
 
-int PrusaDoubleSlider::get_value_from_position(const wxCoord x, const wxCoord y)
+int DoubleSlider::get_value_from_position(const wxCoord x, const wxCoord y)
 {
     const int height = get_size().y;
     const double step = get_scroll_step();
@@ -2026,13 +1943,13 @@ int PrusaDoubleSlider::get_value_from_position(const wxCoord x, const wxCoord y)
         return int(m_min_value + double(height - SLIDER_MARGIN - y) / step + 0.5);
 }
 
-void PrusaDoubleSlider::detect_selected_slider(const wxPoint& pt)
+void DoubleSlider::detect_selected_slider(const wxPoint& pt)
 {
     m_selection = is_point_in_rect(pt, m_rect_lower_thumb) ? ssLower :
                   is_point_in_rect(pt, m_rect_higher_thumb) ? ssHigher : ssUndef;
 }
 
-bool PrusaDoubleSlider::is_point_in_rect(const wxPoint& pt, const wxRect& rect)
+bool DoubleSlider::is_point_in_rect(const wxPoint& pt, const wxRect& rect)
 {
     if (rect.GetLeft() <= pt.x && pt.x <= rect.GetRight() && 
         rect.GetTop()  <= pt.y && pt.y <= rect.GetBottom())
@@ -2040,7 +1957,7 @@ bool PrusaDoubleSlider::is_point_in_rect(const wxPoint& pt, const wxRect& rect)
     return false;
 }
 
-int PrusaDoubleSlider::is_point_near_tick(const wxPoint& pt)
+int DoubleSlider::is_point_near_tick(const wxPoint& pt)
 {
     for (auto tick : m_ticks) {
         const wxCoord pos = get_position_from_value(tick);
@@ -2057,7 +1974,7 @@ int PrusaDoubleSlider::is_point_near_tick(const wxPoint& pt)
     return -1;
 }
 
-void PrusaDoubleSlider::ChangeOneLayerLock()
+void DoubleSlider::ChangeOneLayerLock()
 {
     m_is_one_layer = !m_is_one_layer;
     m_selection == ssLower ? correct_lower_value() : correct_higher_value();
@@ -2071,7 +1988,7 @@ void PrusaDoubleSlider::ChangeOneLayerLock()
     ProcessWindowEvent(e);
 }
 
-void PrusaDoubleSlider::OnLeftDown(wxMouseEvent& event)
+void DoubleSlider::OnLeftDown(wxMouseEvent& event)
 {
     this->CaptureMouse();
     wxClientDC dc(this);
@@ -2116,7 +2033,7 @@ void PrusaDoubleSlider::OnLeftDown(wxMouseEvent& event)
     event.Skip();
 }
 
-void PrusaDoubleSlider::correct_lower_value()
+void DoubleSlider::correct_lower_value()
 {
     if (m_lower_value < m_min_value)
         m_lower_value = m_min_value;
@@ -2127,7 +2044,7 @@ void PrusaDoubleSlider::correct_lower_value()
         m_higher_value = m_lower_value;
 }
 
-void PrusaDoubleSlider::correct_higher_value()
+void DoubleSlider::correct_higher_value()
 {
     if (m_higher_value > m_max_value)
         m_higher_value = m_max_value;
@@ -2138,7 +2055,7 @@ void PrusaDoubleSlider::correct_higher_value()
         m_lower_value = m_higher_value;
 }
 
-void PrusaDoubleSlider::OnMotion(wxMouseEvent& event)
+void DoubleSlider::OnMotion(wxMouseEvent& event)
 {
     bool action = false;
 
@@ -2172,7 +2089,7 @@ void PrusaDoubleSlider::OnMotion(wxMouseEvent& event)
     }
 }
 
-void PrusaDoubleSlider::OnLeftUp(wxMouseEvent& event)
+void DoubleSlider::OnLeftUp(wxMouseEvent& event)
 {
     if (!HasCapture())
         return;
@@ -2187,7 +2104,7 @@ void PrusaDoubleSlider::OnLeftUp(wxMouseEvent& event)
     ProcessWindowEvent(e);
 }
 
-void PrusaDoubleSlider::enter_window(wxMouseEvent& event, const bool enter)
+void DoubleSlider::enter_window(wxMouseEvent& event, const bool enter)
 {
     m_is_focused = enter;
     Refresh();
@@ -2198,7 +2115,7 @@ void PrusaDoubleSlider::enter_window(wxMouseEvent& event, const bool enter)
 // "condition" have to be true for:
 //    -  value increase (if wxSL_VERTICAL)
 //    -  value decrease (if wxSL_HORIZONTAL) 
-void PrusaDoubleSlider::move_current_thumb(const bool condition)
+void DoubleSlider::move_current_thumb(const bool condition)
 {
 //     m_is_one_layer = wxGetKeyState(WXK_CONTROL);
     int delta = condition ? -1 : 1;
@@ -2221,7 +2138,7 @@ void PrusaDoubleSlider::move_current_thumb(const bool condition)
     ProcessWindowEvent(e);
 }
 
-void PrusaDoubleSlider::action_tick(const TicksAction action)
+void DoubleSlider::action_tick(const TicksAction action)
 {
     if (m_selection == ssUndef)
         return;
@@ -2245,7 +2162,7 @@ void PrusaDoubleSlider::action_tick(const TicksAction action)
     Update();
 }
 
-void PrusaDoubleSlider::OnWheel(wxMouseEvent& event)
+void DoubleSlider::OnWheel(wxMouseEvent& event)
 {
     // Set nearest to the mouse thumb as a selected, if there is not selected thumb
     if (m_selection == ssUndef) 
@@ -2265,7 +2182,7 @@ void PrusaDoubleSlider::OnWheel(wxMouseEvent& event)
     move_current_thumb(event.GetWheelRotation() > 0);
 }
 
-void PrusaDoubleSlider::OnKeyDown(wxKeyEvent &event)
+void DoubleSlider::OnKeyDown(wxKeyEvent &event)
 {
     const int key = event.GetKeyCode();
     if (key == '+' || key == WXK_NUMPAD_ADD)
@@ -2291,7 +2208,7 @@ void PrusaDoubleSlider::OnKeyDown(wxKeyEvent &event)
     }
 }
 
-void PrusaDoubleSlider::OnKeyUp(wxKeyEvent &event)
+void DoubleSlider::OnKeyUp(wxKeyEvent &event)
 {
     if (event.GetKeyCode() == WXK_CONTROL)
         m_is_one_layer = false;
@@ -2300,7 +2217,7 @@ void PrusaDoubleSlider::OnKeyUp(wxKeyEvent &event)
     event.Skip();
 }
 
-void PrusaDoubleSlider::OnRightDown(wxMouseEvent& event)
+void DoubleSlider::OnRightDown(wxMouseEvent& event)
 {
     this->CaptureMouse();
     const wxClientDC dc(this);
@@ -2320,7 +2237,7 @@ void PrusaDoubleSlider::OnRightDown(wxMouseEvent& event)
     event.Skip();
 }
 
-void PrusaDoubleSlider::OnRightUp(wxMouseEvent& event)
+void DoubleSlider::OnRightUp(wxMouseEvent& event)
 {
     if (!HasCapture())
         return;
@@ -2334,34 +2251,33 @@ void PrusaDoubleSlider::OnRightUp(wxMouseEvent& event)
 
 
 // ----------------------------------------------------------------------------
-// PrusaLockButton
+// LockButton
 // ----------------------------------------------------------------------------
 
-PrusaLockButton::PrusaLockButton(   wxWindow *parent, 
-                                    wxWindowID id, 
-                                    const wxPoint& pos /*= wxDefaultPosition*/, 
-                                    const wxSize& size /*= wxDefaultSize*/):
-                                    wxButton(parent, id, wxEmptyString, pos, size, wxBU_EXACTFIT | wxNO_BORDER)
+LockButton::LockButton( wxWindow *parent, 
+                        wxWindowID id, 
+                        const wxPoint& pos /*= wxDefaultPosition*/, 
+                        const wxSize& size /*= wxDefaultSize*/):
+                        wxButton(parent, id, wxEmptyString, pos, size, wxBU_EXACTFIT | wxNO_BORDER)
 {
-    m_bmp_lock_on      = create_scaled_bitmap(this, "one_layer_lock_on.png");
-    m_bmp_lock_off     = create_scaled_bitmap(this, "one_layer_lock_off.png");
-    m_bmp_unlock_on    = create_scaled_bitmap(this, "one_layer_unlock_on.png");
-    m_bmp_unlock_off   = create_scaled_bitmap(this, "one_layer_unlock_off.png");
-
+    m_bmp_lock_on      = ScalableBitmap(this, "one_layer_lock_on.png");
+    m_bmp_lock_off     = ScalableBitmap(this, "one_layer_lock_off.png");
+    m_bmp_unlock_on    = ScalableBitmap(this, "one_layer_unlock_on.png");
+    m_bmp_unlock_off   = ScalableBitmap(this, "one_layer_unlock_off.png");
 
 #ifdef __WXMSW__
     SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
 #endif // __WXMSW__
-    SetBitmap(m_bmp_unlock_on);
-    SetBitmapDisabled(m_bmp_lock_on);
+    SetBitmap(m_bmp_unlock_on.bmp());
+    SetBitmapDisabled(m_bmp_lock_on.bmp());
 
     //button events
-    Bind(wxEVT_BUTTON,          &PrusaLockButton::OnButton, this);
-    Bind(wxEVT_ENTER_WINDOW,    &PrusaLockButton::OnEnterBtn, this);
-    Bind(wxEVT_LEAVE_WINDOW,    &PrusaLockButton::OnLeaveBtn, this);
+    Bind(wxEVT_BUTTON,          &LockButton::OnButton, this);
+    Bind(wxEVT_ENTER_WINDOW,    &LockButton::OnEnterBtn, this);
+    Bind(wxEVT_LEAVE_WINDOW,    &LockButton::OnLeaveBtn, this);
 }
 
-void PrusaLockButton::OnButton(wxCommandEvent& event)
+void LockButton::OnButton(wxCommandEvent& event)
 {
     m_is_pushed = !m_is_pushed;
     enter_button(true);
@@ -2369,18 +2285,26 @@ void PrusaLockButton::OnButton(wxCommandEvent& event)
     event.Skip();
 }
 
-void PrusaLockButton::SetLock(bool lock)
+void LockButton::SetLock(bool lock)
 {
     m_is_pushed = lock;
     enter_button(true);
 }
 
-void PrusaLockButton::enter_button(const bool enter)
+void LockButton::msw_rescale()
 {
-    wxBitmap* icon = m_is_pushed ?
-        enter ? &m_bmp_lock_off     : &m_bmp_lock_on :
-        enter ? &m_bmp_unlock_off   : &m_bmp_unlock_on;
-    SetBitmap(*icon);
+    m_bmp_lock_on   .msw_rescale();
+    m_bmp_lock_off  .msw_rescale();
+    m_bmp_unlock_on .msw_rescale();
+    m_bmp_unlock_off.msw_rescale();
+}
+
+void LockButton::enter_button(const bool enter)
+{
+    const wxBitmap& icon = m_is_pushed ?
+        enter ? m_bmp_lock_off.bmp() : m_bmp_lock_on.bmp() :
+        enter ? m_bmp_unlock_off.bmp() : m_bmp_unlock_on.bmp();
+    SetBitmap(icon);
 
     Refresh();
     Update();
@@ -2389,35 +2313,28 @@ void PrusaLockButton::enter_button(const bool enter)
 
 
 // ----------------------------------------------------------------------------
-// PrusaModeButton
+// ModeButton
 // ----------------------------------------------------------------------------
 
-PrusaModeButton::PrusaModeButton(   wxWindow *parent,
-                                    wxWindowID id,
-                                    const wxString& mode/* = wxEmptyString*/,
-                                    const wxBitmap& bmp_on/* = wxNullBitmap*/,
-                                    const wxSize& size/* = wxDefaultSize*/,
-                                    const wxPoint& pos/* = wxDefaultPosition*/) :
-    wxButton(parent, id, mode, pos, size, /*wxBU_EXACTFIT | */wxNO_BORDER),
-    m_bmp_on(bmp_on)
+ModeButton::ModeButton( wxWindow *          parent,
+                        wxWindowID          id,
+                        const std::string&  icon_name   /* = ""*/,
+                        const wxString&     mode        /* = wxEmptyString*/,
+                        const wxSize&       size        /* = wxDefaultSize*/,
+                        const wxPoint&      pos         /* = wxDefaultPosition*/) :
+//     wxButton(parent, id, mode, pos, wxDefaultSize/*size*/, wxBU_EXACTFIT | wxNO_BORDER),
+    ScalableButton(parent, id, icon_name, mode, size, pos)
 {
-#ifdef __WXMSW__
-    SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
-#endif // __WXMSW__
-    m_bmp_off = create_scaled_bitmap(this, "mode_off_sq.png");
-
     m_tt_focused = wxString::Format(_(L("Switch to the %s mode")), mode);
     m_tt_selected = wxString::Format(_(L("Current mode is %s")), mode);
 
-    SetBitmap(m_bmp_on);
-
     //button events
-    Bind(wxEVT_BUTTON,          &PrusaModeButton::OnButton, this);
-    Bind(wxEVT_ENTER_WINDOW,    &PrusaModeButton::OnEnterBtn, this);
-    Bind(wxEVT_LEAVE_WINDOW,    &PrusaModeButton::OnLeaveBtn, this);
+    Bind(wxEVT_BUTTON,          &ModeButton::OnButton, this);
+    Bind(wxEVT_ENTER_WINDOW,    &ModeButton::OnEnterBtn, this);
+    Bind(wxEVT_LEAVE_WINDOW,    &ModeButton::OnLeaveBtn, this);
 }
 
-void PrusaModeButton::OnButton(wxCommandEvent& event)
+void ModeButton::OnButton(wxCommandEvent& event)
 {
     m_is_selected = true;
     focus_button(m_is_selected);
@@ -2425,18 +2342,18 @@ void PrusaModeButton::OnButton(wxCommandEvent& event)
     event.Skip();
 }
 
-void PrusaModeButton::SetState(const bool state)
+void ModeButton::SetState(const bool state)
 {
     m_is_selected = state;
     focus_button(m_is_selected);
     SetToolTip(state ? m_tt_selected : m_tt_focused);
 }
 
-void PrusaModeButton::focus_button(const bool focus)
+void ModeButton::focus_button(const bool focus)
 {
-//     const wxBitmap& bmp = focus ? m_bmp_on : m_bmp_off;
-//     SetBitmap(bmp);
-    const wxFont& new_font = focus ? Slic3r::GUI::wxGetApp().bold_font() : Slic3r::GUI::wxGetApp().small_font();
+    wxFont font = GetFont();
+    const wxFont& new_font = focus ? font.Bold() : font.GetBaseFont();
+
     SetFont(new_font);
 
     Refresh();
@@ -2445,35 +2362,35 @@ void PrusaModeButton::focus_button(const bool focus)
 
 
 // ----------------------------------------------------------------------------
-// PrusaModeSizer
+// ModeSizer
 // ----------------------------------------------------------------------------
 
-PrusaModeSizer::PrusaModeSizer(wxWindow *parent, int hgap/* = 10*/) :
+ModeSizer::ModeSizer(wxWindow *parent, int hgap/* = 10*/) :
     wxFlexGridSizer(3, 0, hgap)
 {
     SetFlexibleDirection(wxHORIZONTAL);
 
-    std::vector<std::pair<wxString, wxBitmap>> buttons = {
-        {_(L("Simple")),    create_scaled_bitmap(parent, "mode_simple_sq.png")},
-        {_(L("Advanced")),  create_scaled_bitmap(parent, "mode_middle_sq.png")},
-        {_(L("Expert")),    create_scaled_bitmap(parent, "mode_expert_sq.png")}
+    std::vector < std::pair < wxString, std::string >> buttons = {
+        {_(L("Simple")),    "mode_simple_sq.png"},
+        {_(L("Advanced")),  "mode_middle_sq.png"},
+        {_(L("Expert")),    "mode_expert_sq.png"}
     };
 
-    mode_btns.reserve(3);
+    m_mode_btns.reserve(3);
     for (const auto& button : buttons) {
-        int x, y;
-        parent->GetTextExtent(button.first, &x, &y, nullptr, nullptr, &Slic3r::GUI::wxGetApp().bold_font());
-        const wxSize size = wxSize(x + button.second.GetWidth() + Slic3r::GUI::wxGetApp().em_unit(), 
-                                   y + Slic3r::GUI::wxGetApp().em_unit());
-        mode_btns.push_back(new PrusaModeButton(parent, wxID_ANY, button.first, button.second, size));
+//         int x, y;
+//         parent->GetTextExtent(button.first, &x, &y, nullptr, nullptr, &Slic3r::GUI::wxGetApp().bold_font());
+//         const wxSize size = wxSize(x + button.second.GetWidth() + Slic3r::GUI::wxGetApp().em_unit(), 
+//                                    y + Slic3r::GUI::wxGetApp().em_unit());
+        m_mode_btns.push_back(new ModeButton(parent, wxID_ANY, button.second, button.first/*, size*/));
     }
 
-    for (auto btn : mode_btns)
+    for (auto btn : m_mode_btns)
     {
         btn->Bind(wxEVT_BUTTON, [btn, this](wxCommandEvent &event) {
             event.Skip();
             int mode_id = 0;
-            for (auto cur_btn : mode_btns) {
+            for (auto cur_btn : m_mode_btns) {
                 if (cur_btn == btn)
                     break;
                 else
@@ -2487,18 +2404,24 @@ PrusaModeSizer::PrusaModeSizer(wxWindow *parent, int hgap/* = 10*/) :
 
 }
 
-void PrusaModeSizer::SetMode(const int mode)
+void ModeSizer::SetMode(const int mode)
 {
-    for (int m = 0; m < mode_btns.size(); m++)
-        mode_btns[m]->SetState(m == mode);
+    for (int m = 0; m < m_mode_btns.size(); m++)
+        m_mode_btns[m]->SetState(m == mode);
 }
 
 
+void ModeSizer::msw_rescale()
+{
+    for (int m = 0; m < m_mode_btns.size(); m++)
+        m_mode_btns[m]->msw_rescale();
+}
+
 // ----------------------------------------------------------------------------
-// PrusaMenu
+// MenuWithSeparators
 // ----------------------------------------------------------------------------
 
-void PrusaMenu::DestroySeparators()
+void MenuWithSeparators::DestroySeparators()
 {
     if (m_separator_frst) {
         Destroy(m_separator_frst);
@@ -2511,10 +2434,89 @@ void PrusaMenu::DestroySeparators()
     }
 }
 
+void MenuWithSeparators::SetFirstSeparator()
+{
+    m_separator_frst = this->AppendSeparator();
+}
 
-// ************************************** EXPERIMENTS ***************************************
+void MenuWithSeparators::SetSecondSeparator()
+{
+    m_separator_scnd = this->AppendSeparator();
+}
+
+// ----------------------------------------------------------------------------
+// PrusaBitmap
+// ----------------------------------------------------------------------------
+ScalableBitmap::ScalableBitmap( wxWindow *parent, 
+                                const std::string& icon_name/* = ""*/,
+                                const int px_cnt/* = 16*/, 
+                                const bool is_horizontal/*  = false*/):
+    m_parent(parent), m_icon_name(icon_name),
+    m_px_cnt(px_cnt), m_is_horizontal(is_horizontal)
+{
+    m_bmp = create_scaled_bitmap(parent, icon_name, px_cnt, is_horizontal);
+}
+
+
+void ScalableBitmap::msw_rescale()
+{
+    m_bmp = create_scaled_bitmap(m_parent, m_icon_name, m_px_cnt, m_is_horizontal);
+}
+
+// ----------------------------------------------------------------------------
+// PrusaButton
+// ----------------------------------------------------------------------------
+
+ScalableButton::ScalableButton( wxWindow *          parent,
+                                wxWindowID          id,
+                                const std::string&  icon_name /*= ""*/,
+                                const wxString&     label /* = wxEmptyString*/,
+                                const wxSize&       size /* = wxDefaultSize*/,
+                                const wxPoint&      pos /* = wxDefaultPosition*/,
+                                long                style /*= wxBU_EXACTFIT | wxNO_BORDER*/) :
+    m_current_icon_name(icon_name),
+    m_parent(parent)
+{
+    Create(parent, id, label, pos, size, style);
+#ifdef __WXMSW__
+    if (style & wxNO_BORDER)
+        SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
+#endif // __WXMSW__
+ 
+    SetBitmap(create_scaled_bitmap(parent, icon_name));
+}
+
+
+ScalableButton::ScalableButton( wxWindow *          parent, 
+                                wxWindowID          id,
+                                const ScalableBitmap&  bitmap,
+                                const wxString&     label /*= wxEmptyString*/, 
+                                long                style /*= wxBU_EXACTFIT | wxNO_BORDER*/) :
+    m_current_icon_name(bitmap.name()),
+    m_parent(parent)
+{
+    Create(parent, id, label, wxDefaultPosition, wxDefaultSize, style);
+#ifdef __WXMSW__
+    if (style & wxNO_BORDER)
+        SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
+#endif // __WXMSW__
+
+    SetBitmap(bitmap.bmp());
+}
+
+void ScalableButton::SetBitmap_(const ScalableBitmap& bmp)
+{
+    SetBitmap(bmp.bmp());
+    m_current_icon_name = bmp.name();
+}
+
+void ScalableButton::msw_rescale()
+{
+    const wxBitmap bmp = create_scaled_bitmap(m_parent, m_current_icon_name);
+
+    SetBitmap(bmp);
+}
 
-// *****************************************************************************
 
 
 
diff --git a/src/slic3r/GUI/wxExtensions.hpp b/src/slic3r/GUI/wxExtensions.hpp
index b935448d9..589317f2b 100644
--- a/src/slic3r/GUI/wxExtensions.hpp
+++ b/src/slic3r/GUI/wxExtensions.hpp
@@ -31,7 +31,12 @@ wxMenuItem* append_submenu(wxMenu* menu, wxMenu* sub_menu, int id, const wxStrin
 wxMenuItem* append_menu_radio_item(wxMenu* menu, int id, const wxString& string, const wxString& description, 
     std::function<void(wxCommandEvent& event)> cb, wxEvtHandler* event_handler);
 
-wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name, const int px_cnt=16, const bool is_horizontal = false);
+class wxDialog;
+void    edit_tooltip(wxString& tooltip);
+void    msw_buttons_rescale(wxDialog* dlg, const int em_unit, const std::vector<int>& btn_ids);
+int     em_unit(wxWindow* win);
+
+wxBitmap create_scaled_bitmap(wxWindow *win, const std::string& bmp_name, const int px_cnt = 16, const bool is_horizontal = false);
 
 class wxCheckListBoxComboPopup : public wxCheckListBox, public wxComboPopup
 {
@@ -94,91 +99,20 @@ public:
 };
 
 
-
-// ***  PrusaCollapsiblePane  *** 
 // ----------------------------------------------------------------------------
-class PrusaCollapsiblePane : public wxCollapsiblePane
+// DataViewBitmapText: helper class used by PrusaBitmapTextRenderer
+// ----------------------------------------------------------------------------
+
+class DataViewBitmapText : public wxObject
 {
 public:
-	PrusaCollapsiblePane() {}
-	PrusaCollapsiblePane(wxWindow *parent,
-		wxWindowID winid,
-		const wxString& label,
-		const wxPoint& pos = wxDefaultPosition,
-		const wxSize& size = wxDefaultSize,
-		long style = wxCP_DEFAULT_STYLE,
-		const wxValidator& val = wxDefaultValidator,
-		const wxString& name = wxCollapsiblePaneNameStr)
-	{
-		Create(parent, winid, label, pos, size, style, val, name);
-	}
-	~PrusaCollapsiblePane() {}
-
-	void OnStateChange(const wxSize& sz); //override/hide of OnStateChange from wxCollapsiblePane
-	virtual bool Show(bool show = true) override {
-		wxCollapsiblePane::Show(show);
-		OnStateChange(GetBestSize());
-		return true;
-	}
-};
-
-
-// ***  PrusaCollapsiblePaneMSW  ***  used only #ifdef __WXMSW__
-// ----------------------------------------------------------------------------
-#ifdef __WXMSW__
-class PrusaCollapsiblePaneMSW : public PrusaCollapsiblePane//wxCollapsiblePane
-{
-	wxButton*	m_pDisclosureTriangleButton = nullptr;
-	wxBitmap	m_bmp_close;
-	wxBitmap	m_bmp_open;
-	wxString    m_strLabel;
-public:
-	PrusaCollapsiblePaneMSW() {}
-	PrusaCollapsiblePaneMSW(	wxWindow *parent,
-							wxWindowID winid,
-							const wxString& label,
-							const wxPoint& pos = wxDefaultPosition,
-							const wxSize& size = wxDefaultSize,
-							long style = wxCP_DEFAULT_STYLE,
-							const wxValidator& val = wxDefaultValidator,
-							const wxString& name = wxCollapsiblePaneNameStr)
-	{
-		Create(parent, winid, label, pos, size, style, val, name);
-	}
-
-	~PrusaCollapsiblePaneMSW() {}
-
-	bool Create(wxWindow *parent,
-				wxWindowID id,
-				const wxString& label,
-				const wxPoint& pos,
-				const wxSize& size,
-				long style,
-				const wxValidator& val,
-				const wxString& name);
-
-	void UpdateBtnBmp();
-	void SetLabel(const wxString &label) override;
-	bool Layout() override;
-	void Collapse(bool collapse) override;
-};
-#endif //__WXMSW__
-
-// *****************************************************************************
-
-// ----------------------------------------------------------------------------
-// PrusaDataViewBitmapText: helper class used by PrusaBitmapTextRenderer
-// ----------------------------------------------------------------------------
-
-class PrusaDataViewBitmapText : public wxObject
-{
-public:
-    PrusaDataViewBitmapText(const wxString &text = wxEmptyString,
-        const wxBitmap& bmp = wxNullBitmap) :
-        m_text(text), m_bmp(bmp)
+    DataViewBitmapText( const wxString &text = wxEmptyString,
+                        const wxBitmap& bmp = wxNullBitmap) :
+        m_text(text), 
+        m_bmp(bmp)
     { }
 
-    PrusaDataViewBitmapText(const PrusaDataViewBitmapText &other)
+    DataViewBitmapText(const DataViewBitmapText &other)
         : wxObject(),
         m_text(other.m_text),
         m_bmp(other.m_bmp)
@@ -186,18 +120,18 @@ public:
 
     void SetText(const wxString &text)      { m_text = text; }
     wxString GetText() const                { return m_text; }
-    void SetBitmap(const wxBitmap &bmp)      { m_bmp = bmp; }
+    void SetBitmap(const wxBitmap &bmp)     { m_bmp = bmp; }
     const wxBitmap &GetBitmap() const       { return m_bmp; }
 
-    bool IsSameAs(const PrusaDataViewBitmapText& other) const {
+    bool IsSameAs(const DataViewBitmapText& other) const {
         return m_text == other.m_text && m_bmp.IsSameAs(other.m_bmp);
     }
 
-    bool operator==(const PrusaDataViewBitmapText& other) const {
+    bool operator==(const DataViewBitmapText& other) const {
         return IsSameAs(other);
     }
 
-    bool operator!=(const PrusaDataViewBitmapText& other) const {
+    bool operator!=(const DataViewBitmapText& other) const {
         return !IsSameAs(other);
     }
 
@@ -205,13 +139,13 @@ private:
     wxString    m_text;
     wxBitmap    m_bmp;
 
-    wxDECLARE_DYNAMIC_CLASS(PrusaDataViewBitmapText);
+    wxDECLARE_DYNAMIC_CLASS(DataViewBitmapText);
 };
-DECLARE_VARIANT_OBJECT(PrusaDataViewBitmapText)
+DECLARE_VARIANT_OBJECT(DataViewBitmapText)
 
 
 // ----------------------------------------------------------------------------
-// PrusaObjectDataViewModelNode: a node inside PrusaObjectDataViewModel
+// ObjectDataViewModelNode: a node inside PrusaObjectDataViewModel
 // ----------------------------------------------------------------------------
 
 enum ItemType {
@@ -223,56 +157,73 @@ enum ItemType {
     itSettings = 16
 };
 
-class PrusaObjectDataViewModelNode;
-WX_DEFINE_ARRAY_PTR(PrusaObjectDataViewModelNode*, MyObjectTreeModelNodePtrArray);
+class ObjectDataViewModelNode;
+WX_DEFINE_ARRAY_PTR(ObjectDataViewModelNode*, MyObjectTreeModelNodePtrArray);
 
-class PrusaObjectDataViewModelNode
+class ObjectDataViewModelNode
 {
-	PrusaObjectDataViewModelNode*	m_parent;
+	ObjectDataViewModelNode*	    m_parent;
 	MyObjectTreeModelNodePtrArray   m_children;
     wxBitmap                        m_empty_bmp;
     size_t                          m_volumes_cnt = 0;
     std::vector< std::string >      m_opt_categories;
+
+    wxString				        m_name;
+    wxBitmap&                       m_bmp = m_empty_bmp;
+    ItemType				        m_type;
+    int                             m_idx = -1;
+    bool					        m_container = false;
+    wxString				        m_extruder = "default";
+    wxBitmap				        m_action_icon;
+
+    std::string                     m_action_icon_name = "";
+    Slic3r::ModelVolumeType         m_volume_type;
+
 public:
-    PrusaObjectDataViewModelNode(const wxString &name, 
-                                 const wxString& extruder) {
-		m_parent	= NULL;
-		m_name		= name;
-		m_type		= itObject;
+    ObjectDataViewModelNode(const wxString &name, 
+                            const wxString& extruder):
+        m_parent(NULL),
+        m_name(name),
+        m_type(itObject),
+        m_extruder(extruder)
+    {
 #ifdef __WXGTK__
         // it's necessary on GTK because of control have to know if this item will be container
         // in another case you couldn't to add subitem for this item
         // it will be produce "segmentation fault"
         m_container = true;
 #endif  //__WXGTK__
-        m_extruder = extruder;
-		set_object_action_icon();
+
+        set_action_icon();
 	}
 
-	PrusaObjectDataViewModelNode(	PrusaObjectDataViewModelNode* parent,
-									const wxString& sub_obj_name, 
-									const wxBitmap& bmp, 
-                                    const wxString& extruder, 
-                                    const int idx = -1 ) {
-		m_parent	= parent;
-		m_name		= sub_obj_name;
-		m_bmp		= bmp;
-		m_type		= itVolume;
-        m_idx       = idx;
-        m_extruder = extruder;
+	ObjectDataViewModelNode(ObjectDataViewModelNode* parent,
+							const wxString& sub_obj_name, 
+							const wxBitmap& bmp, 
+                            const wxString& extruder, 
+                            const int idx = -1 ) :
+        m_parent	(parent),
+		m_name		(sub_obj_name),
+		m_type		(itVolume),
+        m_idx       (idx),
+        m_extruder  (extruder)
+    {
+        m_bmp = bmp;		
 #ifdef __WXGTK__
         // it's necessary on GTK because of control have to know if this item will be container
         // in another case you couldn't to add subitem for this item
         // it will be produce "segmentation fault"
         m_container = true;
 #endif  //__WXGTK__
-		set_part_action_icon();
+
+        set_action_icon();
     }
 
-    PrusaObjectDataViewModelNode(   PrusaObjectDataViewModelNode* parent, const ItemType type) :
-                                    m_parent(parent),
-                                    m_type(type),
-                                    m_extruder(wxEmptyString)
+    ObjectDataViewModelNode(ObjectDataViewModelNode* parent, 
+                            const ItemType type) :
+        m_parent(parent),
+        m_type(type),
+        m_extruder(wxEmptyString)
 	{
         if (type == itSettings) {
             m_name = "Settings to modified";
@@ -286,35 +237,28 @@ public:
         else if (type == itInstance) {
             m_idx = parent->GetChildCount();
             m_name = wxString::Format("Instance_%d", m_idx+1);
-            set_part_action_icon();
+
+            set_action_icon();
         }
 	}
 
-	~PrusaObjectDataViewModelNode()
+	~ObjectDataViewModelNode()
 	{
 		// free all our children nodes
 		size_t count = m_children.GetCount();
 		for (size_t i = 0; i < count; i++)
 		{
-			PrusaObjectDataViewModelNode *child = m_children[i];
+			ObjectDataViewModelNode *child = m_children[i];
 			delete child;
 		}
 	}
-	
-	wxString				m_name;
-    wxBitmap&               m_bmp = m_empty_bmp;
-    ItemType				m_type;
-    int                     m_idx = -1;
-	bool					m_container = false;
-	wxString				m_extruder = "default";
-	wxBitmap				m_action_icon;
 
 	bool IsContainer() const
 	{
 		return m_container;
 	}
 
-	PrusaObjectDataViewModelNode* GetParent()
+	ObjectDataViewModelNode* GetParent()
 	{
 		return m_parent;
 	}
@@ -322,17 +266,17 @@ public:
 	{
 		return m_children;
 	}
-	PrusaObjectDataViewModelNode* GetNthChild(unsigned int n)
+	ObjectDataViewModelNode* GetNthChild(unsigned int n)
 	{
 		return m_children.Item(n);
 	}
-	void Insert(PrusaObjectDataViewModelNode* child, unsigned int n)
+	void Insert(ObjectDataViewModelNode* child, unsigned int n)
 	{
 		if (!m_container)
 			m_container = true;
 		m_children.Insert(child, n);
 	}
-	void Append(PrusaObjectDataViewModelNode* child)
+	void Append(ObjectDataViewModelNode* child)
 	{
 		if (!m_container)
 			m_container = true;
@@ -362,7 +306,7 @@ public:
 		switch (col)
 		{
 		case 0:{
-            PrusaDataViewBitmapText data;
+            DataViewBitmapText data;
 			data << variant;
             m_bmp = data.GetBitmap();
 			m_name = data.GetText();
@@ -400,7 +344,7 @@ public:
 	}
 
 	// use this function only for childrens
-	void AssignAllVal(PrusaObjectDataViewModelNode& from_node)
+	void AssignAllVal(ObjectDataViewModelNode& from_node)
 	{
 		// ! Don't overwrite other values because of equality of this values for all children --
 		m_name = from_node.m_name;
@@ -416,8 +360,8 @@ public:
 			scnd_id < 0 || scnd_id >= GetChildCount())
 			return false;
 
-		PrusaObjectDataViewModelNode new_scnd = *GetNthChild(frst_id);
-		PrusaObjectDataViewModelNode new_frst = *GetNthChild(scnd_id);
+		ObjectDataViewModelNode new_scnd = *GetNthChild(frst_id);
+		ObjectDataViewModelNode new_frst = *GetNthChild(scnd_id);
 
         new_scnd.m_idx = m_children.Item(scnd_id)->m_idx;
         new_frst.m_idx = m_children.Item(frst_id)->m_idx;
@@ -428,37 +372,40 @@ public:
 	}
 
 	// Set action icons for node
-	void set_object_action_icon();
-	void set_part_action_icon();
-    bool update_settings_digest(const std::vector<std::string>& categories);
+    void set_action_icon();
+
+    void    update_settings_digest_bitmaps();
+	bool    update_settings_digest(const std::vector<std::string>& categories);
+    int     volume_type() const { return int(m_volume_type); }
+    void    msw_rescale();
 private:
-    friend class PrusaObjectDataViewModel;
+    friend class ObjectDataViewModel;
 };
 
 // ----------------------------------------------------------------------------
-// PrusaObjectDataViewModel
+// ObjectDataViewModel
 // ----------------------------------------------------------------------------
 
 // custom message the model sends to associated control to notify a last volume deleted from the object:
 wxDECLARE_EVENT(wxCUSTOMEVT_LAST_VOLUME_IS_DELETED, wxCommandEvent);
 
-class PrusaObjectDataViewModel :public wxDataViewModel
+class ObjectDataViewModel :public wxDataViewModel
 {
-	std::vector<PrusaObjectDataViewModelNode*>  m_objects;
+	std::vector<ObjectDataViewModelNode*>       m_objects;
     std::vector<wxBitmap*>                      m_volume_bmps;
 
     wxDataViewCtrl*                             m_ctrl{ nullptr };
 
 public:
-    PrusaObjectDataViewModel();
-    ~PrusaObjectDataViewModel();
+    ObjectDataViewModel();
+    ~ObjectDataViewModel();
 
 	wxDataViewItem Add(const wxString &name, const int extruder);
-    wxDataViewItem AddVolumeChild(const wxDataViewItem &parent_item,
-        const wxString &name,
-        const Slic3r::ModelVolumeType volume_type,
-        const int extruder = 0,
-        const bool create_frst_child = true);
+    wxDataViewItem AddVolumeChild(  const wxDataViewItem &parent_item,
+                                    const wxString &name,
+                                    const Slic3r::ModelVolumeType volume_type,
+                                    const int extruder = 0,
+                                    const bool create_frst_child = true);
     wxDataViewItem AddSettingsChild(const wxDataViewItem &parent_item);
     wxDataViewItem AddInstanceChild(const wxDataViewItem &parent_item, size_t num);
 	wxDataViewItem Delete(const wxDataViewItem &item);
@@ -470,76 +417,82 @@ public:
 	wxDataViewItem GetItemById(int obj_idx);
 	wxDataViewItem GetItemByVolumeId(int obj_idx, int volume_idx);
 	wxDataViewItem GetItemByInstanceId(int obj_idx, int inst_idx);
-	int GetIdByItem(const wxDataViewItem& item) const;
-    int GetIdByItemAndType(const wxDataViewItem& item, const ItemType type) const;
-    int GetObjectIdByItem(const wxDataViewItem& item) const;
-    int GetVolumeIdByItem(const wxDataViewItem& item) const;
-    int GetInstanceIdByItem(const wxDataViewItem& item) const;
+	int  GetIdByItem(const wxDataViewItem& item) const;
+    int  GetIdByItemAndType(const wxDataViewItem& item, const ItemType type) const;
+    int  GetObjectIdByItem(const wxDataViewItem& item) const;
+    int  GetVolumeIdByItem(const wxDataViewItem& item) const;
+    int  GetInstanceIdByItem(const wxDataViewItem& item) const;
     void GetItemInfo(const wxDataViewItem& item, ItemType& type, int& obj_idx, int& idx);
-    int GetRowByItem(const wxDataViewItem& item) const;
+    int  GetRowByItem(const wxDataViewItem& item) const;
     bool IsEmpty() { return m_objects.empty(); }
 
 	// helper method for wxLog
 
-	wxString GetName(const wxDataViewItem &item) const;
-    wxBitmap& GetBitmap(const wxDataViewItem &item) const;
+	wxString    GetName(const wxDataViewItem &item) const;
+    wxBitmap&   GetBitmap(const wxDataViewItem &item) const;
 
 	// helper methods to change the model
 
-	virtual unsigned int GetColumnCount() const override { return 3;}
-	virtual wxString GetColumnType(unsigned int col) const override{ return wxT("string"); }
+	virtual unsigned int    GetColumnCount() const override { return 3;}
+	virtual wxString        GetColumnType(unsigned int col) const override{ return wxT("string"); }
 
-	virtual void GetValue(wxVariant &variant,
-		const wxDataViewItem &item, unsigned int col) const override;
-	virtual bool SetValue(const wxVariant &variant,
-		const wxDataViewItem &item, unsigned int col) override;
-	bool SetValue(const wxVariant &variant, const int item_idx, unsigned int col);
+	virtual void GetValue(  wxVariant &variant,
+		                    const wxDataViewItem &item, 
+                            unsigned int col) const override;
+	virtual bool SetValue(  const wxVariant &variant,
+		                    const wxDataViewItem &item, 
+                            unsigned int col) override;
+	bool SetValue(  const wxVariant &variant, 
+                    const int item_idx, 
+                    unsigned int col);
 
-// 	wxDataViewItem MoveChildUp(const wxDataViewItem &item);
-// 	wxDataViewItem MoveChildDown(const wxDataViewItem &item);
     // For parent move child from cur_volume_id place to new_volume_id 
     // Remaining items will moved up/down accordingly
-    wxDataViewItem ReorganizeChildren(int cur_volume_id, 
-                                      int new_volume_id,
-                                      const wxDataViewItem &parent);
+    wxDataViewItem  ReorganizeChildren( const int cur_volume_id, 
+                                        const int new_volume_id,
+                                        const wxDataViewItem &parent);
 
-	virtual bool IsEnabled(const wxDataViewItem &item, unsigned int col) const override;
+	virtual bool    IsEnabled(const wxDataViewItem &item, unsigned int col) const override;
 
-	virtual wxDataViewItem GetParent(const wxDataViewItem &item) const override;
+	virtual wxDataViewItem  GetParent(const wxDataViewItem &item) const override;
     // get object item
-    wxDataViewItem GetTopParent(const wxDataViewItem &item) const;
-	virtual bool IsContainer(const wxDataViewItem &item) const override;
-	virtual unsigned int GetChildren(const wxDataViewItem &parent,
-		wxDataViewItemArray &array) const override;
+    wxDataViewItem          GetTopParent(const wxDataViewItem &item) const;
+	virtual bool            IsContainer(const wxDataViewItem &item) const override;
+	virtual unsigned int    GetChildren(const wxDataViewItem &parent,
+		                                wxDataViewItemArray &array) const override;
     void GetAllChildren(const wxDataViewItem &parent,wxDataViewItemArray &array) const;
 	// Is the container just a header or an item with all columns
 	// In our case it is an item with all columns 
-	virtual bool HasContainerColumns(const wxDataViewItem& WXUNUSED(item)) const override {	return true; }
+	virtual bool    HasContainerColumns(const wxDataViewItem& WXUNUSED(item)) const override {	return true; }
 
-    ItemType GetItemType(const wxDataViewItem &item) const ;
-    wxDataViewItem    GetItemByType(const wxDataViewItem &parent_item, ItemType type) const;
-    wxDataViewItem    GetSettingsItem(const wxDataViewItem &item) const;
-    wxDataViewItem    GetInstanceRootItem(const wxDataViewItem &item) const;
+    ItemType        GetItemType(const wxDataViewItem &item) const ;
+    wxDataViewItem  GetItemByType(  const wxDataViewItem &parent_item, 
+                                    ItemType type) const;
+    wxDataViewItem  GetSettingsItem(const wxDataViewItem &item) const;
+    wxDataViewItem  GetInstanceRootItem(const wxDataViewItem &item) const;
     bool    IsSettingsItem(const wxDataViewItem &item) const;
-    void    UpdateSettingsDigest(const wxDataViewItem &item, const std::vector<std::string>& categories);
+    void    UpdateSettingsDigest(   const wxDataViewItem &item, 
+                                    const std::vector<std::string>& categories);
 
     void    SetVolumeBitmaps(const std::vector<wxBitmap*>& volume_bmps) { m_volume_bmps = volume_bmps; }
     void    SetVolumeType(const wxDataViewItem &item, const Slic3r::ModelVolumeType type);
 
     void    SetAssociatedControl(wxDataViewCtrl* ctrl) { m_ctrl = ctrl; }
+    // Rescale bitmaps for existing Items
+    void    Rescale();
 };
 
 // ----------------------------------------------------------------------------
-// PrusaBitmapTextRenderer
+// BitmapTextRenderer
 // ----------------------------------------------------------------------------
 #if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
-class PrusaBitmapTextRenderer : public wxDataViewRenderer
+class BitmapTextRenderer : public wxDataViewRenderer
 #else
-class PrusaBitmapTextRenderer : public wxDataViewCustomRenderer
+class BitmapTextRenderer : public wxDataViewCustomRenderer
 #endif //ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
 {
 public:
-    PrusaBitmapTextRenderer(wxDataViewCellMode mode =
+    BitmapTextRenderer(wxDataViewCellMode mode =
 #ifdef __WXOSX__
                                                         wxDATAVIEW_CELL_INERT
 #else
@@ -550,7 +503,7 @@ public:
 #if ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
                             );
 #else
-                            ) : wxDataViewCustomRenderer(wxT("PrusaDataViewBitmapText"), mode, align) {}
+                            ) : wxDataViewCustomRenderer(wxT("DataViewBitmapText"), mode, align) {}
 #endif //ENABLE_NONCUSTOM_DATA_VIEW_RENDERING
 
     bool SetValue(const wxVariant &value);
@@ -578,7 +531,7 @@ public:
     bool        WasCanceled() const { return m_was_unusable_symbol; }
 
 private:
-    PrusaDataViewBitmapText m_value;
+    DataViewBitmapText m_value;
     bool                    m_was_unusable_symbol {false};
 };
 
@@ -676,7 +629,37 @@ private:
 
 
 // ----------------------------------------------------------------------------
-// PrusaDoubleSlider
+// ScalableBitmap
+// ----------------------------------------------------------------------------
+
+class ScalableBitmap
+{
+public:
+    ScalableBitmap() {};
+    ScalableBitmap( wxWindow *parent, 
+                    const std::string& icon_name = "",
+                    const int px_cnt = 16,
+                    const bool is_horizontal = false);
+
+    ~ScalableBitmap() {}
+
+    void                msw_rescale();
+
+    const wxBitmap&     bmp() const { return m_bmp; }
+    wxBitmap&           bmp()       { return m_bmp; }
+    const std::string&  name() const{ return m_icon_name; }
+
+private:
+    wxWindow*       m_parent{ nullptr };
+    wxBitmap        m_bmp = wxBitmap();
+    std::string     m_icon_name = "";
+    int             m_px_cnt {16};
+    bool            m_is_horizontal {false};
+};
+
+
+// ----------------------------------------------------------------------------
+// DoubleSlider
 // ----------------------------------------------------------------------------
 
 // custom message the slider sends to its parent to notify a tick-change:
@@ -693,10 +676,10 @@ enum TicksAction{
     taDel
 };
 
-class PrusaDoubleSlider : public wxControl
+class DoubleSlider : public wxControl
 {
 public:
-    PrusaDoubleSlider(
+    DoubleSlider(
         wxWindow *parent,
         wxWindowID id,
         int lowerValue, 
@@ -708,7 +691,9 @@ public:
         long style = wxSL_VERTICAL,
         const wxValidator& val = wxDefaultValidator,
         const wxString& name = wxEmptyString);
-    ~PrusaDoubleSlider() {}
+    ~DoubleSlider() {}
+
+    void    msw_rescale();
 
     int GetMinValue() const { return m_min_value; }
     int GetMaxValue() const { return m_max_value; }
@@ -717,6 +702,7 @@ public:
     int GetLowerValue() const { return m_lower_value; }
     int GetHigherValue() const { return m_higher_value; }
     int GetActiveValue() const;
+    wxSize get_min_size() const ;
     double GetLowerValueD()  { return get_double_value(ssLower); }
     double GetHigherValueD() { return get_double_value(ssHigher); }
     wxSize DoGetBestSize() const override;
@@ -801,16 +787,16 @@ private:
     int         m_max_value;
     int         m_lower_value;
     int         m_higher_value;
-    wxBitmap    m_bmp_thumb_higher;
-    wxBitmap    m_bmp_thumb_lower;
-    wxBitmap    m_bmp_add_tick_on;
-    wxBitmap    m_bmp_add_tick_off;
-    wxBitmap    m_bmp_del_tick_on;
-    wxBitmap    m_bmp_del_tick_off;
-    wxBitmap    m_bmp_one_layer_lock_on;
-    wxBitmap    m_bmp_one_layer_lock_off;
-    wxBitmap    m_bmp_one_layer_unlock_on;
-    wxBitmap    m_bmp_one_layer_unlock_off;
+    ScalableBitmap    m_bmp_thumb_higher;
+    ScalableBitmap    m_bmp_thumb_lower;
+    ScalableBitmap    m_bmp_add_tick_on;
+    ScalableBitmap    m_bmp_add_tick_off;
+    ScalableBitmap    m_bmp_del_tick_on;
+    ScalableBitmap    m_bmp_del_tick_off;
+    ScalableBitmap    m_bmp_one_layer_lock_on;
+    ScalableBitmap    m_bmp_one_layer_lock_off;
+    ScalableBitmap    m_bmp_one_layer_unlock_on;
+    ScalableBitmap    m_bmp_one_layer_unlock_off;
     SelectedSlider  m_selection;
     bool        m_is_left_down = false;
     bool        m_is_right_down = false;
@@ -841,26 +827,26 @@ private:
     wxPen   GREY_PEN;
     wxPen   LIGHT_GREY_PEN;
 
-    std::vector<wxPen*> line_pens;
-    std::vector<wxPen*> segm_pens;
+    std::vector<wxPen*> m_line_pens;
+    std::vector<wxPen*> m_segm_pens;
     std::set<int>       m_ticks;
     std::vector<std::pair<int,double>> m_values;
 };
 
 
 // ----------------------------------------------------------------------------
-// PrusaLockButton
+// LockButton
 // ----------------------------------------------------------------------------
 
-class PrusaLockButton : public wxButton
+class LockButton : public wxButton
 {
 public:
-    PrusaLockButton(
+    LockButton(
         wxWindow *parent,
         wxWindowID id,
         const wxPoint& pos = wxDefaultPosition,
         const wxSize& size = wxDefaultSize);
-    ~PrusaLockButton() {}
+    ~LockButton() {}
 
     void    OnButton(wxCommandEvent& event);
     void    OnEnterBtn(wxMouseEvent& event) { enter_button(true); event.Skip(); }
@@ -869,34 +855,72 @@ public:
     bool    IsLocked() const { return m_is_pushed; }
     void    SetLock(bool lock);
 
+    void    msw_rescale();
+
 protected:
     void    enter_button(const bool enter);
 
 private:
     bool        m_is_pushed = false;
 
-    wxBitmap    m_bmp_lock_on;
-    wxBitmap    m_bmp_lock_off;
-    wxBitmap    m_bmp_unlock_on;
-    wxBitmap    m_bmp_unlock_off;
+    ScalableBitmap    m_bmp_lock_on;
+    ScalableBitmap    m_bmp_lock_off;
+    ScalableBitmap    m_bmp_unlock_on;
+    ScalableBitmap    m_bmp_unlock_off;
 };
 
 
 // ----------------------------------------------------------------------------
-// PrusaModeButton
+// ScalableButton
 // ----------------------------------------------------------------------------
 
-class PrusaModeButton : public wxButton
+class ScalableButton : public wxButton
 {
 public:
-    PrusaModeButton(
-        wxWindow *parent,
-        wxWindowID id,
-        const wxString& mode = wxEmptyString,
-        const wxBitmap& bmp_on = wxNullBitmap,
-        const wxSize& size = wxDefaultSize,
-        const wxPoint& pos = wxDefaultPosition);
-    ~PrusaModeButton() {}
+    ScalableButton(){}
+    ScalableButton(
+        wxWindow *          parent,
+        wxWindowID          id,
+        const std::string&  icon_name = "",
+        const wxString&     label = wxEmptyString,
+        const wxSize&       size = wxDefaultSize,
+        const wxPoint&      pos = wxDefaultPosition,
+        long                style = wxBU_EXACTFIT | wxNO_BORDER);
+
+    ScalableButton(
+        wxWindow *          parent,
+        wxWindowID          id,
+        const ScalableBitmap&  bitmap,
+        const wxString&     label = wxEmptyString,
+        long                style = wxBU_EXACTFIT | wxNO_BORDER);
+
+    ~ScalableButton() {}
+
+    void SetBitmap_(const ScalableBitmap& bmp);
+
+    void    msw_rescale();
+
+private:
+    wxWindow*       m_parent;
+    std::string     m_current_icon_name = "";
+};
+
+
+// ----------------------------------------------------------------------------
+// ModeButton
+// ----------------------------------------------------------------------------
+
+class ModeButton : public ScalableButton
+{
+public:
+    ModeButton(
+        wxWindow*           parent,
+        wxWindowID          id,
+        const std::string&  icon_name = "",
+        const wxString&     mode = wxEmptyString,
+        const wxSize&       size = wxDefaultSize,
+        const wxPoint&      pos = wxDefaultPosition);
+    ~ModeButton() {}
 
     void    OnButton(wxCommandEvent& event);
     void    OnEnterBtn(wxMouseEvent& event) { focus_button(true); event.Skip(); }
@@ -910,8 +934,6 @@ protected:
 private:
     bool        m_is_selected = false;
 
-    wxBitmap    m_bmp_on;
-    wxBitmap    m_bmp_off;
     wxString    m_tt_selected;
     wxString    m_tt_focused;
 };
@@ -919,47 +941,49 @@ private:
 
 
 // ----------------------------------------------------------------------------
-// PrusaModeSizer
+// ModeSizer
 // ----------------------------------------------------------------------------
 
-class PrusaModeSizer : public wxFlexGridSizer
+class ModeSizer : public wxFlexGridSizer
 {
 public:
-    PrusaModeSizer( wxWindow *parent, int hgap = 10);
-    ~PrusaModeSizer() {}
+    ModeSizer( wxWindow *parent, int hgap = 10);
+    ~ModeSizer() {}
 
     void SetMode(const /*ConfigOptionMode*/int mode);
 
+    void msw_rescale();
+
 private:
-    std::vector<PrusaModeButton*> mode_btns;
+    std::vector<ModeButton*> m_mode_btns;
 };
 
 
 
 // ----------------------------------------------------------------------------
-// PrusaMenu
+// MenuWithSeparators
 // ----------------------------------------------------------------------------
 
-class PrusaMenu : public wxMenu
+class MenuWithSeparators : public wxMenu
 {
 public:
-    PrusaMenu(const wxString& title, long style = 0)
+    MenuWithSeparators(const wxString& title, long style = 0)
         : wxMenu(title, style) {}
 
-    PrusaMenu(long style = 0)
+    MenuWithSeparators(long style = 0)
         : wxMenu(style) {}
 
-    ~PrusaMenu() {}
+    ~MenuWithSeparators() {}
 
     void DestroySeparators();
+    void SetFirstSeparator();
+    void SetSecondSeparator();
 
+private:
     wxMenuItem* m_separator_frst { nullptr };    // use like separator before settings item
     wxMenuItem* m_separator_scnd { nullptr };   // use like separator between settings items
 };
 
 
-// ******************************* EXPERIMENTS **********************************************
-// ******************************************************************************************
-
 
 #endif // slic3r_GUI_wxExtensions_hpp_