diff --git a/gui/drawwindow.py b/gui/drawwindow.py
index f26ca20..efd14f7 100644
--- a/gui/drawwindow.py
+++ b/gui/drawwindow.py
@@ -885,6 +885,12 @@ class Window(gtk.Window):
         dialog.add_filter(f)
 
         f = gtk.FileFilter()
+        filter2info[f] = ('.png', {'alpha': True, 'multiple': True})
+        f.set_name("Multiple PNG transparent (*.XXX.png)")
+        f.add_pattern("*.png")
+        dialog.add_filter(f)
+
+        f = gtk.FileFilter()
         filter2info[f] = ('.jpg', {'quality': 90})
         f.set_name("JPEG 90% quality (*.jpg; *.jpeg)")
         f.add_pattern("*.jpg")
diff --git a/lib/document.py b/lib/document.py
index 47a9347..80f719a 100644
--- a/lib/document.py
+++ b/lib/document.py
@@ -261,15 +261,22 @@ class Document():
     def render_as_pixbuf(self, *args):
         return pixbufsurface.render_as_pixbuf(self, *args)
 
-    def save_png(self, filename, compression=2, alpha=False):
-        if alpha:
-            tmp_layer = layer.Layer()
-            for l in self.layers:
-                l.merge_into(tmp_layer)
-            pixbuf = tmp_layer.surface.render_as_pixbuf()
+    def save_png(self, filename, compression=2, alpha=False, multiple=False):
+        if multiple:
+            x0, y0, w0, h0 = self.get_bbox()
+            for i, l in enumerate(self.layers):
+                pixbuf = pixbufsurface.render_as_pixbuf(l.surface, x0, y0, w0, h0, alpha=True)
+                tmp_filename = filename.replace ('.png', ".%06d.png" %(i+1) )
+                pixbuf.save(tmp_filename, 'png', {'compression':str(compression)})
         else:
-            pixbuf = self.render_as_pixbuf()
-        pixbuf.save(filename, 'png', {'compression':str(compression)})
+            if alpha:
+                tmp_layer = layer.Layer()
+                for l in self.layers:
+                    l.merge_into(tmp_layer)
+                pixbuf = tmp_layer.surface.render_as_pixbuf()
+            else:
+                pixbuf = self.render_as_pixbuf()
+            pixbuf.save(filename, 'png', {'compression':str(compression)})
 
     def load_png(self, filename):
         self.load_from_pixbuf(gdk.pixbuf_new_from_file(filename))
