diff --git a/goo/PNGWriter.cc b/goo/PNGWriter.cc
index c9d5199..99be021 100644
--- a/goo/PNGWriter.cc
+++ b/goo/PNGWriter.cc
@@ -117,6 +117,10 @@
       bit_depth = 8;
       color_type = PNG_COLOR_TYPE_RGB;
       break;
+    case RGB48:
+      bit_depth = 16;
+      color_type = PNG_COLOR_TYPE_RGB;
+      break;
     case RGBA:
       bit_depth = 8;
       color_type = PNG_COLOR_TYPE_RGB_ALPHA;
diff --git a/goo/PNGWriter.h b/goo/PNGWriter.h
index 90a298e..ddaedaf 100644
--- a/goo/PNGWriter.h
+++ b/goo/PNGWriter.h
@@ -32,8 +32,9 @@
    * RGBA       - 4 bytes/pixel
    * GRAY       - 1 byte/pixel
    * MONOCHROME - 8 pixels/byte
+   * RGB48      - 6 bytes/pixel
    */
-  enum Format { RGB, RGBA, GRAY, MONOCHROME };
+  enum Format { RGB, RGBA, GRAY, MONOCHROME, RGB48 };
 
   PNGWriter(Format format = RGB);
   ~PNGWriter();
diff --git a/goo/TiffWriter.cc b/goo/TiffWriter.cc
index 3160087..ef2f169 100644
--- a/goo/TiffWriter.cc
+++ b/goo/TiffWriter.cc
@@ -147,6 +147,12 @@
       samplesperpixel = 4;
       photometric = PHOTOMETRIC_SEPARATED;
       break;
+
+    case RGB48:
+      samplesperpixel = 3;
+      bitspersample = 16;
+      photometric = PHOTOMETRIC_RGB;
+      break;
   }
 
   // Open the file
diff --git a/goo/TiffWriter.h b/goo/TiffWriter.h
index 52fdd53..e347c64 100644
--- a/goo/TiffWriter.h
+++ b/goo/TiffWriter.h
@@ -31,8 +31,9 @@
    * GRAY                - 1 byte/pixel
    * MONOCHROME          - 8 pixels/byte
    * CMYK                - 4 bytes/pixel
+   * RGB48               - 6 bytes/pixel
    */
-  enum Format { RGB, RGBA_PREMULTIPLIED, GRAY, MONOCHROME, CMYK };
+  enum Format { RGB, RGBA_PREMULTIPLIED, GRAY, MONOCHROME, CMYK, RGB48 };
 
   TiffWriter(Format format = RGB);
   ~TiffWriter();
diff --git a/poppler/GfxState.h b/poppler/GfxState.h
index 3888871..e0872f7 100644
--- a/poppler/GfxState.h
+++ b/poppler/GfxState.h
@@ -132,6 +132,10 @@
   return (Guchar)(((x << 8) - x + 0x8000) >> 16);
 }
 
+static inline Gushort colToShort(GfxColorComp x) {
+  return (Gushort)(x);
+}
+
 //------------------------------------------------------------------------
 // GfxColor
 //------------------------------------------------------------------------
diff --git a/utils/ImageOutputDev.cc b/utils/ImageOutputDev.cc
index 5de51ad..798595c 100644
--- a/utils/ImageOutputDev.cc
+++ b/utils/ImageOutputDev.cc
@@ -349,7 +349,11 @@
     str->reset();
   }
 
-  row = (unsigned char *) gmallocn(width, sizeof(unsigned int));
+  int pixelSize = sizeof(unsigned int);
+  if (format == imgRGB48)
+    pixelSize = 2*sizeof(unsigned int);
+
+  row = (unsigned char *) gmallocn(width, pixelSize);
 
   // PDF masks use 0 = draw current color, 1 = leave unchanged.
   // We invert this to provide the standard interpretation of alpha
@@ -384,6 +388,26 @@
       writer->writeRow(&row);
       break;
 
+    case imgRGB48: {
+      p = imgStr->getLine();
+      Gushort *rowp16 = (Gushort*)row;
+      for (int x = 0; x < width; ++x) {
+	if (p) {
+	  colorMap->getRGB(p, &rgb);
+	  *rowp16++ = colToShort(rgb.r);
+	  *rowp16++ = colToShort(rgb.g);
+	  *rowp16++ = colToShort(rgb.b);
+	  p += colorMap->getNumPixelComps();
+	} else {
+	  *rowp16++ = 0;
+	    *rowp16++ = 0;
+	    *rowp16++ = 0;
+	}
+      }
+      writer->writeRow(&row);
+      break;
+    }
+
     case imgCMYK:
       p = imgStr->getLine();
       rowp = row;
@@ -532,6 +556,12 @@
                colorMap->getColorSpace()->getMode() == csCalGray) {
       writer = new PNGWriter(PNGWriter::GRAY);
       format = imgGray;
+    } else if ((colorMap->getColorSpace()->getMode() == csDeviceRGB ||
+		colorMap->getColorSpace()->getMode() == csCalRGB ||
+		(colorMap->getColorSpace()->getMode() == csICCBased && colorMap->getNumPixelComps() == 3)) &&
+	       colorMap->getBits() > 8) {
+      writer = new PNGWriter(PNGWriter::RGB48);
+      format = imgRGB48;
     } else {
       writer = new PNGWriter(PNGWriter::RGB);
       format = imgRGB;
@@ -557,6 +587,12 @@
                (colorMap->getColorSpace()->getMode() == csICCBased && colorMap->getNumPixelComps() == 4)) {
       writer = new TiffWriter(TiffWriter::CMYK);
       format = imgCMYK;
+    } else if ((colorMap->getColorSpace()->getMode() == csDeviceRGB ||
+		colorMap->getColorSpace()->getMode() == csCalRGB ||
+		(colorMap->getColorSpace()->getMode() == csICCBased && colorMap->getNumPixelComps() == 3)) &&
+	       colorMap->getBits() > 8) {
+      writer = new TiffWriter(TiffWriter::RGB48);
+      format = imgRGB48;
     } else {
       writer = new TiffWriter(TiffWriter::RGB);
       format = imgRGB;
diff --git a/utils/ImageOutputDev.h b/utils/ImageOutputDev.h
index a694bbc..668bb08 100644
--- a/utils/ImageOutputDev.h
+++ b/utils/ImageOutputDev.h
@@ -55,6 +55,7 @@
   };
   enum ImageFormat {
     imgRGB,
+    imgRGB48,
     imgGray,
     imgMonochrome,
     imgCMYK
