diff --git a/src/com/t_oster/liblasercut/drivers/LaosCutter.java b/src/com/t_oster/liblasercut/drivers/LaosCutter.java
index f73aa5a705da4d8660f4a62eec87cae22eb73ca5..b7fe8db96d0a930be2f97c465c8ee922ca320f3d 100644
--- a/src/com/t_oster/liblasercut/drivers/LaosCutter.java
+++ b/src/com/t_oster/liblasercut/drivers/LaosCutter.java
@@ -289,7 +289,6 @@ public class LaosCutter extends LaserCutter
     int power = 100;
     int speed = 50;
     int frequency = 500;
-    double focus = 0;
     //reset saved values, so the first ones get verbosed
     this.currentPower = -1;
     this.currentSpeed = -1;
@@ -310,11 +309,7 @@ public class LaosCutter extends LaserCutter
           currentPower = p.getPower();
           currentSpeed = p.getSpeed();
           currentFrequency = p.getFrequency();
-          if (currentFocus != p.getFocus())
-          {
-            out.printf(Locale.US, "2 %f\n", (float) Util.mm2px(p.getFocus(), resolution));
-            currentFocus = p.getFocus();
-          }
+          setFocus(out, p.getFocus());
           break;
         }
       }
@@ -324,31 +319,29 @@ public class LaosCutter extends LaserCutter
 
   private void move(PrintStream out, float x, float y, int resolution)
   {
-    out.printf("0 %f %f\n", px2steps(isFlipXaxis() ? Util.mm2px(bedWidth, resolution) - x : x, resolution), px2steps(isFlipYaxis() ? Util.mm2px(bedHeight, resolution) - y : y, resolution));
+    out.printf("0 %d %d\n", px2steps(isFlipXaxis() ? Util.mm2px(bedWidth, resolution) - x : x, resolution), px2steps(isFlipYaxis() ? Util.mm2px(bedHeight, resolution) - y : y, resolution));
   }
   private float currentPower = -1;
   private float currentSpeed = -1;
-  private float currentFocus = 0;
   private float currentFrequency = -1;
-
   private void line(PrintStream out, float x, float y, float power, float speed, float frequency, int resolution)
   {
     if (currentPower != power)
     {
-      out.printf("7 101 %f\n", power * 100);
+      out.printf("7 101 %d\n", (int) (power * 100));
       currentPower = power;
     }
     if (currentSpeed != speed)
     {
-      out.printf("7 100 %f\n", speed * 100);
+      out.printf("7 100 %d\n", (int) (speed * 100));
       currentSpeed = speed;
     }
     if (currentFrequency != frequency)
     {
-      out.printf("7 102 %f\n", frequency);
+      out.printf("7 102 %d\n", (int) frequency);
       currentFrequency = frequency;
     }
-    out.printf("1 %f %f\n", px2steps(isFlipXaxis() ? Util.mm2px(bedWidth, resolution) - x : x, resolution), px2steps(isFlipYaxis() ? Util.mm2px(bedHeight, resolution) - y : y, resolution));
+    out.printf("1 %d %d\n", px2steps(isFlipXaxis() ? Util.mm2px(bedWidth, resolution) - x : x, resolution), px2steps(isFlipYaxis() ? Util.mm2px(bedHeight, resolution) - y : y, resolution));
   }
 
   private byte[] generatePseudoRaster3dGCode(Raster3dPart rp, int resolution) throws UnsupportedEncodingException
@@ -360,8 +353,7 @@ public class LaosCutter extends LaserCutter
     {
       Point rasterStart = rp.getRasterStart(raster);
       FloatPowerSpeedFocusFrequencyProperty prop = (FloatPowerSpeedFocusFrequencyProperty) rp.getLaserProperty(raster);
-      //Set focus
-      out.printf(Locale.US, "2 %d\n", (int) Util.mm2px(prop.getFocus(), resolution));
+      setFocus(out, prop.getFocus());
       for (int line = 0; line < rp.getRasterHeight(raster); line++)
       {
         Point lineStart = rasterStart.clone();
@@ -448,7 +440,7 @@ public class LaosCutter extends LaserCutter
       Point rasterStart = rp.getRasterStart(raster);
       FloatPowerSpeedFocusFrequencyProperty prop = (FloatPowerSpeedFocusFrequencyProperty) rp.getLaserProperty(raster);
       //Set focus
-      out.printf(Locale.US, "2 %d\n", (int) Util.mm2px(prop.getFocus(), resolution));
+      setFocus(out, prop.getFocus());
       for (int line = 0; line < rp.getRasterHeight(raster); line++)
       {
         Point lineStart = rasterStart.clone();
@@ -969,4 +961,14 @@ public class LaosCutter extends LaserCutter
     clone.useLaosRastermode = useLaosRastermode;
     return clone;
   }
+
+  private float lastFocus = -1;
+  private void setFocus(PrintStream out, float focus)
+  {
+    if (lastFocus != focus)
+    {
+      out.printf(Locale.US, "2 %d\n", (int) (focus/this.mmPerStep));
+      lastFocus = focus;
+    }
+  }
 }