diff --git a/lib/Slic3r/GCode.pm b/lib/Slic3r/GCode.pm
index 492fd190d..0deb4b03b 100644
--- a/lib/Slic3r/GCode.pm
+++ b/lib/Slic3r/GCode.pm
@@ -63,6 +63,7 @@ sub move_z {
     my ($z, $comment) = @_;
     
     $z *= &Slic3r::SCALING_FACTOR;
+    $z += $Slic3r::Config->z_offset;
     
     my $gcode = "";
     my $current_z = $self->z;
diff --git a/lib/Slic3r/Print.pm b/lib/Slic3r/Print.pm
index f342c3315..1bc1ad65f 100644
--- a/lib/Slic3r/Print.pm
+++ b/lib/Slic3r/Print.pm
@@ -705,14 +705,6 @@ sub write_gcode {
         }
     }
     
-    # apply Z offset
-    if ($Slic3r::Config->z_offset > 0) {
-        printf $fh "G1 Z%s ; set Z offset\n", $Slic3r::Config->z_offset;
-        print  $fh "G92 Z0 ; set Z offset\n";
-    } elsif ($Slic3r::Config->z_offset < 0) {
-        printf $fh "G92 Z%s ; set Z offset\n", 1*(-$Slic3r::Config->z_offset);
-    }
-    
     # calculate X,Y shift to center print around specified origin
     my @print_bb = $self->bounding_box;
     my @shift = (