diff --git a/image_creator/disk.py b/image_creator/disk.py
index 3e13446300c628af7b3dae906e834960ede73231..af3b2f337b8915c465d30ebe43242d76bfe744c2 100644
--- a/image_creator/disk.py
+++ b/image_creator/disk.py
@@ -18,7 +18,7 @@
 """Module hosting the Disk class."""
 
 from image_creator.util import get_command, try_fail_repeat, free_space, \
-    FatalError, create_snapshot
+    FatalError, create_snapshot, image_info
 from image_creator.bundle_volume import BundleVolume
 from image_creator.image import Image
 
@@ -157,19 +157,21 @@ class Disk(object):
             return self.file
 
         # Examine media file
-        mode = os.stat(self.file).st_mode
+        info = image_info(self.file)
 
         self.out.output("Snapshotting media source ...", False)
 
-        # Create a qcow2 snapshot for image files
-        if not stat.S_ISBLK(mode):
+        # Create a qcow2 snapshot for image files that are not raw
+        if info['format'] != 'raw':
             snapshot = create_snapshot(self.file, self.tmp)
             self._add_cleanup(os.unlink, snapshot)
             self.out.success('done')
             return snapshot
 
-        # Create a device-mapper snapshot for block devices
-        size = int(blockdev('--getsz', self.file))
+        # Create a device-mapper snapshot for raw image files and block devices
+        mode = os.stat(self.file).st_mode
+        device = self.file if stat.S_ISBLK(mode) else self._losetup(self.file)
+        size = int(blockdev('--getsz', device))
 
         cowfd, cow = tempfile.mkstemp(dir=self.tmp)
         os.close(cowfd)
@@ -183,7 +185,7 @@ class Disk(object):
         try:
             try:
                 os.write(tablefd, "0 %d snapshot %s %s n 8\n" %
-                         (size, self.file, cowdev))
+                         (size, device, cowdev))
             finally:
                 os.close(tablefd)
 
@@ -196,7 +198,6 @@ class Disk(object):
 
     def get_image(self, media, **kwargs):
         """Returns a newly created Image instance."""
-
         image = Image(media, self.out, **kwargs)
         self._images.append(image)
         image.enable()