diff --git a/vtm-desktop/src/org/oscim/awt/AwtBitmap.java b/vtm-desktop/src/org/oscim/awt/AwtBitmap.java
index 807c7b63..1a2554a2 100644
--- a/vtm-desktop/src/org/oscim/awt/AwtBitmap.java
+++ b/vtm-desktop/src/org/oscim/awt/AwtBitmap.java
@@ -1,6 +1,6 @@
 /*
  * Copyright 2013 Hannes Janetzek
- * Copyright 2016 devemux86
+ * Copyright 2016-2017 devemux86
  * Copyright 2016-2017 Longri
  *
  * This file is part of the OpenScienceMap project (http://www.opensciencemap.org).
@@ -47,7 +47,7 @@ public class AwtBitmap implements Bitmap {
     boolean internal;
 
     public AwtBitmap(int width, int height, int format) {
-        bitmap = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB_PRE);
+        bitmap = new BufferedImage(width, height, format != 0 ? format : BufferedImage.TYPE_INT_ARGB);
         this.width = width;
         this.height = height;
 
diff --git a/vtm-desktop/src/org/oscim/awt/AwtCanvas.java b/vtm-desktop/src/org/oscim/awt/AwtCanvas.java
index aca49ad3..7b50faaa 100644
--- a/vtm-desktop/src/org/oscim/awt/AwtCanvas.java
+++ b/vtm-desktop/src/org/oscim/awt/AwtCanvas.java
@@ -129,17 +129,21 @@ public class AwtCanvas implements Canvas {
 
     @Override
     public void drawBitmap(Bitmap bitmap, float x, float y) {
-        int intX = (int) x;
-        int intY = (int) y;
         BufferedImage src = ((AwtBitmap) bitmap).bitmap;
-        int[] srcbuf = ((DataBufferInt) src.getRaster().getDataBuffer()).getData();
-        int[] dstbuf = ((DataBufferInt) this.bitmap.getRaster().getDataBuffer()).getData();
-        int width = intX + src.getWidth() > this.bitmap.getWidth() ? this.getWidth() - intX : src.getWidth();
-        int height = intY + src.getHeight() > this.bitmap.getHeight() ? this.getHeight() - intY : src.getHeight();
-        int dstoffs = intX + intY * this.bitmap.getWidth();
-        int srcoffs = 0;
-        for (int i = 0; i < height; i++, dstoffs += this.bitmap.getWidth(), srcoffs += width)
-            System.arraycopy(srcbuf, srcoffs, dstbuf, dstoffs, width);
+        // TODO Need better check
+        if (src.isAlphaPremultiplied()) {
+            int intX = (int) x;
+            int intY = (int) y;
+            int[] srcbuf = ((DataBufferInt) src.getRaster().getDataBuffer()).getData();
+            int[] dstbuf = ((DataBufferInt) this.bitmap.getRaster().getDataBuffer()).getData();
+            int width = intX + src.getWidth() > this.bitmap.getWidth() ? this.getWidth() - intX : src.getWidth();
+            int height = intY + src.getHeight() > this.bitmap.getHeight() ? this.getHeight() - intY : src.getHeight();
+            int dstoffs = intX + intY * this.bitmap.getWidth();
+            int srcoffs = 0;
+            for (int i = 0; i < height; i++, dstoffs += this.bitmap.getWidth(), srcoffs += width)
+                System.arraycopy(srcbuf, srcoffs, dstbuf, dstoffs, width);
+        } else
+            this.canvas.drawImage(src, (int) x, (int) y, null);
     }
 
     @Override
diff --git a/vtm/src/org/oscim/utils/BitmapPacker.java b/vtm/src/org/oscim/utils/BitmapPacker.java
index d0b2cc4c..48c1d393 100755
--- a/vtm/src/org/oscim/utils/BitmapPacker.java
+++ b/vtm/src/org/oscim/utils/BitmapPacker.java
@@ -1,5 +1,6 @@
 /*
  * Copyright 2017 Longri
+ * Copyright 2017 devemux86
  *
  * Based on PixmapPacker from LibGdx converted to use VTM Bitmaps without any LibGdx dependencies:
  * https://github.com/libgdx/libgdx/blob/master/gdx/src/com/badlogic/gdx/graphics/g2d/PixmapPacker.java
@@ -89,7 +90,9 @@ public class BitmapPacker {
         final ArrayList<Object> addedRects = new ArrayList<>();
 
         PackerAtlasItem(BitmapPacker packer) {
-            image = CanvasAdapter.newBitmap(packer.atlasWidth, packer.atlasHeight, 0);
+            // On Desktop we use BufferedImage.TYPE_INT_ARGB_PRE (3) format
+            int format = CanvasAdapter.platform.isDesktop() ? 3 : 0;
+            image = CanvasAdapter.newBitmap(packer.atlasWidth, packer.atlasHeight, format);
             canvas = CanvasAdapter.newCanvas();
             canvas.setBitmap(this.image);
             canvas.fillColor(Color.TRANSPARENT);