diff --git a/lib/Slic3r/GUI/3DScene.pm b/lib/Slic3r/GUI/3DScene.pm
index 4ca5b4188..b16f7db42 100644
--- a/lib/Slic3r/GUI/3DScene.pm
+++ b/lib/Slic3r/GUI/3DScene.pm
@@ -68,6 +68,7 @@ __PACKAGE__->mk_accessors( qw(_quat _dirty init
                               _zoom
                               
                               _legend_enabled
+                              _apply_zoom_to_volumes_filter
                                                             
                               ) );
                               
@@ -142,6 +143,7 @@ sub new {
     $self->_zoom(1);
     $self->_legend_enabled(0);
     $self->use_plain_shader(0);
+    $self->_apply_zoom_to_volumes_filter(0);
 
     # Collection of GLVolume objects
     $self->volumes(Slic3r::GUI::_3DScene::GLVolume::Collection->new);
@@ -704,14 +706,18 @@ sub zoom_to_volume {
 
 sub zoom_to_volumes {
     my ($self) = @_;
+    $self->_apply_zoom_to_volumes_filter(1);
     $self->zoom_to_bounding_box($self->volumes_bounding_box);
+    $self->_apply_zoom_to_volumes_filter(0);
 }
 
 sub volumes_bounding_box {
     my ($self) = @_;
     
     my $bb = Slic3r::Geometry::BoundingBoxf3->new;
-    $bb->merge($_->transformed_bounding_box) for @{$self->volumes};
+    foreach my $v (@{$self->volumes}) {
+        $bb->merge($v->transformed_bounding_box) if (! $self->_apply_zoom_to_volumes_filter || $v->zoom_to_volumes);
+    }
     return $bb;
 }
 
diff --git a/xs/src/libslic3r/GCode.cpp b/xs/src/libslic3r/GCode.cpp
index 080b4769d..2c2df6ec3 100644
--- a/xs/src/libslic3r/GCode.cpp
+++ b/xs/src/libslic3r/GCode.cpp
@@ -1384,7 +1384,7 @@ void GCode::apply_print_config(const PrintConfig &print_config)
 
 void GCode::append_full_config(const Print& print, std::string& str)
 {
-    char buff[1024];
+    char buff[4096];
 
     const StaticPrintConfig *configs[] = { &print.config, &print.default_object_config, &print.default_region_config };
     for (size_t i = 0; i < sizeof(configs) / sizeof(configs[0]); ++i) {
diff --git a/xs/src/slic3r/GUI/3DScene.cpp b/xs/src/slic3r/GUI/3DScene.cpp
index 3deadd105..3a8aa5ca7 100644
--- a/xs/src/slic3r/GUI/3DScene.cpp
+++ b/xs/src/slic3r/GUI/3DScene.cpp
@@ -2211,26 +2211,31 @@ void _3DScene::_update_gcode_volumes_visibility(const GCodePreviewData& preview_
             case GCodePreviewVolumeIndex::Travel:
                 {
                     volume->is_active = preview_data.travel.is_visible;
+                    volume->zoom_to_volumes = false;
                     break;
                 }
             case GCodePreviewVolumeIndex::Retraction:
                 {
                     volume->is_active = preview_data.retraction.is_visible;
+                    volume->zoom_to_volumes = false;
                     break;
                 }
             case GCodePreviewVolumeIndex::Unretraction:
                 {
                     volume->is_active = preview_data.unretraction.is_visible;
+                    volume->zoom_to_volumes = false;
                     break;
                 }
             case GCodePreviewVolumeIndex::Shell:
                 {
                     volume->is_active = preview_data.shell.is_visible;
+                    volume->zoom_to_volumes = false;
                     break;
                 }
             default:
                 {
                     volume->is_active = false;
+                    volume->zoom_to_volumes = false;
                     break;
                 }
             }
diff --git a/xs/src/slic3r/GUI/3DScene.hpp b/xs/src/slic3r/GUI/3DScene.hpp
index 9cbcb6ebc..542be3ef6 100644
--- a/xs/src/slic3r/GUI/3DScene.hpp
+++ b/xs/src/slic3r/GUI/3DScene.hpp
@@ -215,6 +215,7 @@ public:
         drag_group_id(-1),
         selected(false),
         is_active(true),
+        zoom_to_volumes(true),
         hover(false),
         tverts_range(0, size_t(-1)),
         qverts_range(0, size_t(-1))
@@ -253,6 +254,8 @@ public:
     bool                selected;
     // Whether or not this volume is active for rendering
     bool                is_active;
+    // Whether or not to use this volume when applying zoom_to_volumes()
+    bool                zoom_to_volumes;
     // Boolean: Is mouse over this object?
     bool                hover;
 
diff --git a/xs/xsp/GUI_3DScene.xsp b/xs/xsp/GUI_3DScene.xsp
index 961c837d9..dbf171615 100644
--- a/xs/xsp/GUI_3DScene.xsp
+++ b/xs/xsp/GUI_3DScene.xsp
@@ -42,6 +42,8 @@
         %code%{ RETVAL = THIS->hover; %};
     void                set_hover(int i)
         %code%{ THIS->hover = i; %};
+    int                 zoom_to_volumes()
+        %code%{ RETVAL = THIS->zoom_to_volumes; %};
 
     int                 object_idx() const;
     int                 volume_idx() const;