diff --git a/Source/Core/Data/ImageData.cs b/Source/Core/Data/ImageData.cs
index dec6249e0a694a2a221b50de5d03eb91cb8c3778..016b3f4cb215e807d32f7353a7be99a20920a81b 100755
--- a/Source/Core/Data/ImageData.cs
+++ b/Source/Core/Data/ImageData.cs
@@ -73,6 +73,7 @@ namespace CodeImp.DoomBuilder.Data
         // GDI bitmap
         private Bitmap bitmap;
         private Bitmap previewbitmap;
+        private Bitmap spritepreviewbitmap;
 
         // Direct3D texture
         private int mipmaplevels;	// 0 = all mipmaps
@@ -147,8 +148,12 @@ namespace CodeImp.DoomBuilder.Data
 			{
 				// Clean up
 				bitmap?.Dispose();
-				texture?.Dispose();
-				bitmap = null;
+                previewbitmap?.Dispose();
+                spritepreviewbitmap?.Dispose();
+                texture?.Dispose();
+                bitmap = null;
+                previewbitmap = null;
+                spritepreviewbitmap = null;
 				texture = null;
 					
 				// Done
@@ -213,22 +218,24 @@ namespace CodeImp.DoomBuilder.Data
 
         public Image GetBackgroundBitmap()
         {
-            return GetBitmap();
+            return LocalGetBitmap();
         }
 
         public Bitmap GetSkyboxBitmap()
         {
-            return GetBitmap();
+            return LocalGetBitmap();
         }
 
         public Bitmap ExportBitmap()
         {
-            return GetBitmap();
+            return LocalGetBitmap();
         }
 
         public Bitmap GetSpritePreview()
         {
-            return GetBitmap();
+            if (spritepreviewbitmap == null)
+                spritepreviewbitmap = LocalGetBitmap();
+            return spritepreviewbitmap;
         }
 
         // Loads the image directly. This is needed by the background loader for some patches.