Index: src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java
===================================================================
--- src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java	(revision 1406610)
+++ src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMap.java	(working copy)
@@ -28,9 +28,12 @@
 import java.awt.image.ColorModel;
 import java.awt.image.IndexColorModel;
 import java.awt.image.WritableRaster;
+import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
 
+import javax.imageio.ImageIO;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.pdfbox.cos.COSArray;
@@ -42,6 +45,7 @@
 import org.apache.pdfbox.pdmodel.common.function.PDFunction;
 
 import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
+import org.apache.pdfbox.pdmodel.graphics.color.PDColorState;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
 import org.apache.pdfbox.pdmodel.graphics.color.PDICCBased;
@@ -352,47 +356,8 @@
             System.arraycopy( array, 0,bufferData, 0,
                     (array.length<bufferData.length?array.length: bufferData.length) );
             image = new BufferedImage(cm, raster, false, null);
-
-            // If there is a 'soft mask' image then we use that as a transparency mask.
-            PDXObjectImage smask = getSMaskImage();
-            if (smask != null)
-            {
-                BufferedImage smaskBI = smask.getRGBImage();
-
-                COSArray decodeArray = smask.getDecode();
-
-                CompositeImage compositeImage = new CompositeImage(image, smaskBI);
-                BufferedImage rgbImage = compositeImage.createMaskedImage(decodeArray);
-
-                return rgbImage;
-            }
-            else if (getImageMask())
-            {
-                BufferedImage stencilMask = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
-                Graphics2D graphics = (Graphics2D)stencilMask.getGraphics();
-                if (getStencilColor() != null)
-                {
-                    graphics.setColor(getStencilColor().getJavaColor());
-                }
-                else
-                {
-                    // this might happen when using ExractImages, see PDFBOX-1145
-                    LOG.debug("no stencil color for PixelMap found, using Color.BLACK instead.");
-                    graphics.setColor(Color.BLACK);
-                }
-                
-                graphics.fillRect(0, 0, width, height);
-                // assume default values ([0,1]) for the DecodeArray
-                // TODO DecodeArray == [1,0]
-                graphics.setComposite(AlphaComposite.DstIn);
-                graphics.drawImage(image, null, 0, 0);
-                return stencilMask;
-            }
-            else
-            {
-                // if there is no mask, use the unaltered image.
-                return image;
-            }
+           
+            return applyMasks(image);  
         }
         catch (Exception exception)
         {
@@ -402,8 +367,10 @@
             return null;
         }
     }
+    
+ 
 
-    /**
+	/**
      * Writes the image as .png.
      *
      * {@inheritDoc}
