diff --git a/OpenXmlPowerTools/WmlToHtmlConverter.cs b/OpenXmlPowerTools/WmlToHtmlConverter.cs
index 3d1cb496..3246d2cf 100644
--- a/OpenXmlPowerTools/WmlToHtmlConverter.cs
+++ b/OpenXmlPowerTools/WmlToHtmlConverter.cs
@@ -6,6 +6,7 @@
 using System.Diagnostics.CodeAnalysis;
 using System.Drawing;
 using System.Globalization;
+using System.IO;
 using System.Linq;
 using System.Text;
 using System.Xml.Linq;
@@ -118,9 +119,18 @@ public static XElement ConvertToHtml(WordprocessingDocument wDoc, HtmlConverterS
 
     [SuppressMessage("ReSharper", "NotAccessedField.Global")]
     [SuppressMessage("ReSharper", "UnusedMember.Global")]
-    public class ImageInfo
+    public class ImageInfo : IDisposable
     {
-        public Bitmap Bitmap;
+        public ImageInfo()
+        {
+            m_bitmap = new Lazy<Bitmap>(() => new Bitmap(new MemoryStream(ImageBytes)));
+        }
+        
+        private readonly Lazy<Bitmap> m_bitmap;
+        public Bitmap Bitmap => m_bitmap.Value;
+
+        public byte[] ImageBytes;
+        
         public XAttribute ImgStyleAttribute;
         public string ContentType;
         public XElement DrawingElement;
@@ -128,6 +138,14 @@ public class ImageInfo
 
         public const int EmusPerInch = 914400;
         public const int EmusPerCm = 360000;
+
+        public void Dispose()
+        {
+            if (m_bitmap.IsValueCreated)
+            {
+                m_bitmap.Value.Dispose();
+            }
+        }
     }
 
     public static class WmlToHtmlConverter
@@ -3078,48 +3096,54 @@ private static XElement ProcessDrawing(WordprocessingDocument wordDoc,
             if (!ImageContentTypes.Contains(contentType))
                 return null;
 
+            
+            var memoryStream = new MemoryStream();
             using (var partStream = imagePart.GetStream())
-            using (var bitmap = new Bitmap(partStream))
             {
+                partStream.CopyTo(memoryStream);
+                var imageBytes = memoryStream.ToArray();
+                
                 if (extentCx != null && extentCy != null)
                 {
-                    var imageInfo = new ImageInfo()
-                    {
-                        Bitmap = bitmap,
-                        ImgStyleAttribute = new XAttribute("style",
-                            string.Format(NumberFormatInfo.InvariantInfo,
-                                "width: {0}in; height: {1}in",
-                                (float)extentCx / (float)ImageInfo.EmusPerInch,
-                                (float)extentCy / (float)ImageInfo.EmusPerInch)),
-                        ContentType = contentType,
-                        DrawingElement = element,
-                        AltText = altText,
-                    };
-                    var imgElement2 = imageHandler(imageInfo);
-                    if (hyperlinkUri != null)
-                    {
-                        return new XElement(XhtmlNoNamespace.a,
-                            new XAttribute(XhtmlNoNamespace.href, hyperlinkUri),
-                            imgElement2);
+                    using (var imageInfo = new ImageInfo
+                           {
+                               ImageBytes = imageBytes,
+                               ImgStyleAttribute = new XAttribute("style",
+                                   string.Format(NumberFormatInfo.InvariantInfo,
+                                       "width: {0}in; height: {1}in",
+                                       (float)extentCx / (float)ImageInfo.EmusPerInch,
+                                       (float)extentCy / (float)ImageInfo.EmusPerInch)),
+                               ContentType = contentType,
+                               DrawingElement = element,
+                               AltText = altText,
+                           })
+                    { 
+                        var imgElement2 = imageHandler(imageInfo);
+                        if (hyperlinkUri != null)
+                        {
+                            return new XElement(XhtmlNoNamespace.a, new XAttribute(XhtmlNoNamespace.href, hyperlinkUri), imgElement2);
+                        } 
+                        return imgElement2;   
                     }
-                    return imgElement2;
                 }
 
-                var imageInfo2 = new ImageInfo()
+                using (var imageInfo2 = new ImageInfo()
                 {
-                    Bitmap = bitmap,
+                    ImageBytes = imageBytes,
                     ContentType = contentType,
                     DrawingElement = element,
                     AltText = altText,
-                };
-                var imgElement = imageHandler(imageInfo2);
-                if (hyperlinkUri != null)
+                })
                 {
-                    return new XElement(XhtmlNoNamespace.a,
-                        new XAttribute(XhtmlNoNamespace.href, hyperlinkUri),
-                        imgElement);
+                    var imgElement = imageHandler(imageInfo2);
+                    if (hyperlinkUri != null)
+                    {
+                        return new XElement(XhtmlNoNamespace.a,
+                            new XAttribute(XhtmlNoNamespace.href, hyperlinkUri),
+                            imgElement);
+                    }
+                    return imgElement;
                 }
-                return imgElement;
             }
         }
 
@@ -3145,18 +3169,18 @@ private static XElement ProcessPictureOrObject(WordprocessingDocument wordDoc,
                 {
                     try
                     {
-                        using (var bitmap = new Bitmap(partStream))
+                        var memoryStream = new MemoryStream();
+                        partStream.CopyTo(memoryStream);
+                        using (var imageInfo = new ImageInfo()
+                        {
+                            ImageBytes = memoryStream.ToArray(),
+                            ContentType = contentType,
+                            DrawingElement = element
+                        })
                         {
-                            var imageInfo = new ImageInfo()
-                            {
-                                Bitmap = bitmap,
-                                ContentType = contentType,
-                                DrawingElement = element
-                            };
-
                             var style = (string)element.Elements(VML.shape).Attributes("style").FirstOrDefault();
                             if (style == null) return imageHandler(imageInfo);
-
+    
                             var tokens = style.Split(';');
                             var widthInPoints = WidthInPoints(tokens);
                             var heightInPoints = HeightInPoints(tokens);