...
diff --git a/coders/ps.c b/coders/ps.c
index 15a4bb6..d599ab7 100644
--- a/coders/ps.c
+++ b/coders/ps.c
@@ -1176,15 +1176,15 @@
 %
 */
 
-static inline unsigned char *PopHexPixel(const char *const *hex_digits,
+static inline unsigned char *PopHexPixel(const char hex_digits[][3],
   const size_t pixel,unsigned char *pixels)
 {
   register const char
     *hex;
 
   hex=hex_digits[pixel];
-  *pixels++=(unsigned char) (*hex++);
-  *pixels++=(unsigned char) (*hex);
+  *pixels++=(unsigned char) (*hex++ & 0xff);
+  *pixels++=(unsigned char) (*hex & 0xff);
   return(pixels);
 }
 
@@ -1210,7 +1210,7 @@
 }
 
   static const char
-    *const hex_digits[] =
+    hex_digits[][3] =
     {
       "00", "01", "02", "03", "04", "05", "06", "07", "08", "09", "0A", "0B",
       "0C", "0D", "0E", "0F", "10", "11", "12", "13", "14", "15", "16", "17",
@@ -1233,263 +1233,257 @@
       "D8", "D9", "DA", "DB", "DC", "DD", "DE", "DF", "E0", "E1", "E2", "E3",
       "E4", "E5", "E6", "E7", "E8", "E9", "EA", "EB", "EC", "ED", "EE", "EF",
       "F0", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "FA", "FB",
-      "FC", "FD", "FE", "FF",  (const char *) NULL
+      "FC", "FD", "FE", "FF"
     },
-    *const PostscriptProlog[]=
-    {
-      "%%BeginProlog",
-      "%",
-      "% Display a color image.  The image is displayed in color on",
-      "% Postscript viewers or printers that support color, otherwise",
-      "% it is displayed as grayscale.",
-      "%",
-      "/DirectClassPacket",
-      "{",
-      "  %",
-      "  % Get a DirectClass packet.",
-      "  %",
-      "  % Parameters:",
-      "  %   red.",
-      "  %   green.",
-      "  %   blue.",
-      "  %   length: number of pixels minus one of this color (optional).",
-      "  %",
-      "  currentfile color_packet readhexstring pop pop",
-      "  compression 0 eq",
-      "  {",
-      "    /number_pixels 3 def",
-      "  }",
-      "  {",
-      "    currentfile byte readhexstring pop 0 get",
-      "    /number_pixels exch 1 add 3 mul def",
-      "  } ifelse",
-      "  0 3 number_pixels 1 sub",
-      "  {",
-      "    pixels exch color_packet putinterval",
-      "  } for",
-      "  pixels 0 number_pixels getinterval",
-      "} bind def",
-      "",
-      "/DirectClassImage",
-      "{",
-      "  %",
-      "  % Display a DirectClass image.",
-      "  %",
-      "  systemdict /colorimage known",
-      "  {",
-      "    columns rows 8",
-      "    [",
-      "      columns 0 0",
-      "      rows neg 0 rows",
-      "    ]",
-      "    { DirectClassPacket } false 3 colorimage",
-      "  }",
-      "  {",
-      "    %",
-      "    % No colorimage operator;  convert to grayscale.",
-      "    %",
-      "    columns rows 8",
-      "    [",
-      "      columns 0 0",
-      "      rows neg 0 rows",
-      "    ]",
-      "    { GrayDirectClassPacket } image",
-      "  } ifelse",
-      "} bind def",
-      "",
-      "/GrayDirectClassPacket",
-      "{",
-      "  %",
-      "  % Get a DirectClass packet;  convert to grayscale.",
-      "  %",
-      "  % Parameters:",
-      "  %   red",
-      "  %   green",
-      "  %   blue",
-      "  %   length: number of pixels minus one of this color (optional).",
-      "  %",
-      "  currentfile color_packet readhexstring pop pop",
-      "  color_packet 0 get 0.299 mul",
-      "  color_packet 1 get 0.587 mul add",
-      "  color_packet 2 get 0.114 mul add",
-      "  cvi",
-      "  /gray_packet exch def",
-      "  compression 0 eq",
-      "  {",
-      "    /number_pixels 1 def",
-      "  }",
-      "  {",
-      "    currentfile byte readhexstring pop 0 get",
-      "    /number_pixels exch 1 add def",
-      "  } ifelse",
-      "  0 1 number_pixels 1 sub",
-      "  {",
-      "    pixels exch gray_packet put",
-      "  } for",
-      "  pixels 0 number_pixels getinterval",
-      "} bind def",
-      "",
-      "/GrayPseudoClassPacket",
-      "{",
-      "  %",
-      "  % Get a PseudoClass packet;  convert to grayscale.",
-      "  %",
-      "  % Parameters:",
-      "  %   index: index into the colormap.",
-      "  %   length: number of pixels minus one of this color (optional).",
-      "  %",
-      "  currentfile byte readhexstring pop 0 get",
-      "  /offset exch 3 mul def",
-      "  /color_packet colormap offset 3 getinterval def",
-      "  color_packet 0 get 0.299 mul",
-      "  color_packet 1 get 0.587 mul add",
-      "  color_packet 2 get 0.114 mul add",
-      "  cvi",
-      "  /gray_packet exch def",
-      "  compression 0 eq",
-      "  {",
-      "    /number_pixels 1 def",
-      "  }",
-      "  {",
-      "    currentfile byte readhexstring pop 0 get",
-      "    /number_pixels exch 1 add def",
-      "  } ifelse",
-      "  0 1 number_pixels 1 sub",
-      "  {",
-      "    pixels exch gray_packet put",
-      "  } for",
-      "  pixels 0 number_pixels getinterval",
-      "} bind def",
-      "",
-      "/PseudoClassPacket",
-      "{",
-      "  %",
-      "  % Get a PseudoClass packet.",
-      "  %",
-      "  % Parameters:",
-      "  %   index: index into the colormap.",
-      "  %   length: number of pixels minus one of this color (optional).",
-      "  %",
-      "  currentfile byte readhexstring pop 0 get",
-      "  /offset exch 3 mul def",
-      "  /color_packet colormap offset 3 getinterval def",
-      "  compression 0 eq",
-      "  {",
-      "    /number_pixels 3 def",
-      "  }",
-      "  {",
-      "    currentfile byte readhexstring pop 0 get",
-      "    /number_pixels exch 1 add 3 mul def",
-      "  } ifelse",
-      "  0 3 number_pixels 1 sub",
-      "  {",
-      "    pixels exch color_packet putinterval",
-      "  } for",
-      "  pixels 0 number_pixels getinterval",
-      "} bind def",
-      "",
-      "/PseudoClassImage",
-      "{",
-      "  %",
-      "  % Display a PseudoClass image.",
-      "  %",
-      "  % Parameters:",
-      "  %   class: 0-PseudoClass or 1-Grayscale.",
-      "  %",
-      "  currentfile buffer readline pop",
-      "  token pop /class exch def pop",
-      "  class 0 gt",
-      "  {",
-      "    currentfile buffer readline pop",
-      "    token pop /depth exch def pop",
-      "    /grays columns 8 add depth sub depth mul 8 idiv string def",
-      "    columns rows depth",
-      "    [",
-      "      columns 0 0",
-      "      rows neg 0 rows",
-      "    ]",
-      "    { currentfile grays readhexstring pop } image",
-      "  }",
-      "  {",
-      "    %",
-      "    % Parameters:",
-      "    %   colors: number of colors in the colormap.",
-      "    %   colormap: red, green, blue color packets.",
-      "    %",
-      "    currentfile buffer readline pop",
-      "    token pop /colors exch def pop",
-      "    /colors colors 3 mul def",
-      "    /colormap colors string def",
-      "    currentfile colormap readhexstring pop pop",
-      "    systemdict /colorimage known",
-      "    {",
-      "      columns rows 8",
-      "      [",
-      "        columns 0 0",
-      "        rows neg 0 rows",
-      "      ]",
-      "      { PseudoClassPacket } false 3 colorimage",
-      "    }",
-      "    {",
-      "      %",
-      "      % No colorimage operator;  convert to grayscale.",
-      "      %",
-      "      columns rows 8",
-      "      [",
-      "        columns 0 0",
-      "        rows neg 0 rows",
-      "      ]",
-      "      { GrayPseudoClassPacket } image",
-      "    } ifelse",
-      "  } ifelse",
-      "} bind def",
-      "",
-      "/DisplayImage",
-      "{",
-      "  %",
-      "  % Display a DirectClass or PseudoClass image.",
-      "  %",
-      "  % Parameters:",
-      "  %   x & y translation.",
-      "  %   x & y scale.",
-      "  %   label pointsize.",
-      "  %   image label.",
-      "  %   image columns & rows.",
-      "  %   class: 0-DirectClass or 1-PseudoClass.",
-      "  %   compression: 0-none or 1-RunlengthEncoded.",
-      "  %   hex color packets.",
-      "  %",
-      "  gsave",
-      "  /buffer 512 string def",
-      "  /byte 1 string def",
-      "  /color_packet 3 string def",
-      "  /pixels 768 string def",
-      "",
-      "  currentfile buffer readline pop",
-      "  token pop /x exch def",
-      "  token pop /y exch def pop",
-      "  x y translate",
-      "  currentfile buffer readline pop",
-      "  token pop /x exch def",
-      "  token pop /y exch def pop",
-      "  currentfile buffer readline pop",
-      "  token pop /pointsize exch def pop",
-      (const char *) NULL
-    },
-    *const PostscriptEpilog[]=
-    {
-      "  x y scale",
-      "  currentfile buffer readline pop",
-      "  token pop /columns exch def",
-      "  token pop /rows exch def pop",
-      "  currentfile buffer readline pop",
-      "  token pop /class exch def pop",
-      "  currentfile buffer readline pop",
-      "  token pop /compression exch def pop",
-      "  class 0 gt { PseudoClassImage } { DirectClassImage } ifelse",
-      "  grestore",
-      (const char *) NULL
-    };
+    PostscriptProlog[] =
+      "%%BeginProlog\n"
+      "%\n"
+      "% Display a color image.  The image is displayed in color on\n"
+      "% Postscript viewers or printers that support color, otherwise\n"
+      "% it is displayed as grayscale.\n"
+      "%\n"
+      "/DirectClassPacket\n"
+      "{\n"
+      "  %\n"
+      "  % Get a DirectClass packet.\n"
+      "  %\n"
+      "  % Parameters:\n"
+      "  %   red.\n"
+      "  %   green.\n"
+      "  %   blue.\n"
+      "  %   length: number of pixels minus one of this color (optional).\n"
+      "  %\n"
+      "  currentfile color_packet readhexstring pop pop\n"
+      "  compression 0 eq\n"
+      "  {\n"
+      "    /number_pixels 3 def\n"
+      "  }\n"
+      "  {\n"
+      "    currentfile byte readhexstring pop 0 get\n"
+      "    /number_pixels exch 1 add 3 mul def\n"
+      "  } ifelse\n"
+      "  0 3 number_pixels 1 sub\n"
+      "  {\n"
+      "    pixels exch color_packet putinterval\n"
+      "  } for\n"
+      "  pixels 0 number_pixels getinterval\n"
+      "} bind def\n"
+      "\n"
+      "/DirectClassImage\n"
+      "{\n"
+      "  %\n"
+      "  % Display a DirectClass image.\n"
+      "  %\n"
+      "  systemdict /colorimage known\n"
+      "  {\n"
+      "    columns rows 8\n"
+      "    [\n"
+      "      columns 0 0\n"
+      "      rows neg 0 rows\n"
+      "    ]\n"
+      "    { DirectClassPacket } false 3 colorimage\n"
+      "  }\n"
+      "  {\n"
+      "    %\n"
+      "    % No colorimage operator;  convert to grayscale.\n"
+      "    %\n"
+      "    columns rows 8\n"
+      "    [\n"
+      "      columns 0 0\n"
+      "      rows neg 0 rows\n"
+      "    ]\n"
+      "    { GrayDirectClassPacket } image\n"
+      "  } ifelse\n"
+      "} bind def\n"
+      "\n"
+      "/GrayDirectClassPacket\n"
+      "{\n"
+      "  %\n"
+      "  % Get a DirectClass packet;  convert to grayscale.\n"
+      "  %\n"
+      "  % Parameters:\n"
+      "  %   red\n"
+      "  %   green\n"
+      "  %   blue\n"
+      "  %   length: number of pixels minus one of this color (optional).\n"
+      "  %\n"
+      "  currentfile color_packet readhexstring pop pop\n"
+      "  color_packet 0 get 0.299 mul\n"
+      "  color_packet 1 get 0.587 mul add\n"
+      "  color_packet 2 get 0.114 mul add\n"
+      "  cvi\n"
+      "  /gray_packet exch def\n"
+      "  compression 0 eq\n"
+      "  {\n"
+      "    /number_pixels 1 def\n"
+      "  }\n"
+      "  {\n"
+      "    currentfile byte readhexstring pop 0 get\n"
+      "    /number_pixels exch 1 add def\n"
+      "  } ifelse\n"
+      "  0 1 number_pixels 1 sub\n"
+      "  {\n"
+      "    pixels exch gray_packet put\n"
+      "  } for\n"
+      "  pixels 0 number_pixels getinterval\n"
+      "} bind def\n"
+      "\n"
+      "/GrayPseudoClassPacket\n"
+      "{\n"
+      "  %\n"
+      "  % Get a PseudoClass packet;  convert to grayscale.\n"
+      "  %\n"
+      "  % Parameters:\n"
+      "  %   index: index into the colormap.\n"
+      "  %   length: number of pixels minus one of this color (optional).\n"
+      "  %\n"
+      "  currentfile byte readhexstring pop 0 get\n"
+      "  /offset exch 3 mul def\n"
+      "  /color_packet colormap offset 3 getinterval def\n"
+      "  color_packet 0 get 0.299 mul\n"
+      "  color_packet 1 get 0.587 mul add\n"
+      "  color_packet 2 get 0.114 mul add\n"
+      "  cvi\n"
+      "  /gray_packet exch def\n"
+      "  compression 0 eq\n"
+      "  {\n"
+      "    /number_pixels 1 def\n"
+      "  }\n"
+      "  {\n"
+      "    currentfile byte readhexstring pop 0 get\n"
+      "    /number_pixels exch 1 add def\n"
+      "  } ifelse\n"
+      "  0 1 number_pixels 1 sub\n"
+      "  {\n"
+      "    pixels exch gray_packet put\n"
+      "  } for\n"
+      "  pixels 0 number_pixels getinterval\n"
+      "} bind def\n"
+      "\n"
+      "/PseudoClassPacket\n"
+      "{\n"
+      "  %\n"
+      "  % Get a PseudoClass packet.\n"
+      "  %\n"
+      "  % Parameters:\n"
+      "  %   index: index into the colormap.\n"
+      "  %   length: number of pixels minus one of this color (optional).\n"
+      "  %\n"
+      "  currentfile byte readhexstring pop 0 get\n"
+      "  /offset exch 3 mul def\n"
+      "  /color_packet colormap offset 3 getinterval def\n"
+      "  compression 0 eq\n"
+      "  {\n"
+      "    /number_pixels 3 def\n"
+      "  }\n"
+      "  {\n"
+      "    currentfile byte readhexstring pop 0 get\n"
+      "    /number_pixels exch 1 add 3 mul def\n"
+      "  } ifelse\n"
+      "  0 3 number_pixels 1 sub\n"
+      "  {\n"
+      "    pixels exch color_packet putinterval\n"
+      "  } for\n"
+      "  pixels 0 number_pixels getinterval\n"
+      "} bind def\n"
+      "\n"
+      "/PseudoClassImage\n"
+      "{\n"
+      "  %\n"
+      "  % Display a PseudoClass image.\n"
+      "  %\n"
+      "  % Parameters:\n"
+      "  %   class: 0-PseudoClass or 1-Grayscale.\n"
+      "  %\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /class exch def pop\n"
+      "  class 0 gt\n"
+      "  {\n"
+      "    currentfile buffer readline pop\n"
+      "    token pop /depth exch def pop\n"
+      "    /grays columns 8 add depth sub depth mul 8 idiv string def\n"
+      "    columns rows depth\n"
+      "    [\n"
+      "      columns 0 0\n"
+      "      rows neg 0 rows\n"
+      "    ]\n"
+      "    { currentfile grays readhexstring pop } image\n"
+      "  }\n"
+      "  {\n"
+      "    %\n"
+      "    % Parameters:\n"
+      "    %   colors: number of colors in the colormap.\n"
+      "    %   colormap: red, green, blue color packets.\n"
+      "    %\n"
+      "    currentfile buffer readline pop\n"
+      "    token pop /colors exch def pop\n"
+      "    /colors colors 3 mul def\n"
+      "    /colormap colors string def\n"
+      "    currentfile colormap readhexstring pop pop\n"
+      "    systemdict /colorimage known\n"
+      "    {\n"
+      "      columns rows 8\n"
+      "      [\n"
+      "        columns 0 0\n"
+      "        rows neg 0 rows\n"
+      "      ]\n"
+      "      { PseudoClassPacket } false 3 colorimage\n"
+      "    }\n"
+      "    {\n"
+      "      %\n"
+      "      % No colorimage operator;  convert to grayscale.\n"
+      "      %\n"
+      "      columns rows 8\n"
+      "      [\n"
+      "        columns 0 0\n"
+      "        rows neg 0 rows\n"
+      "      ]\n"
+      "      { GrayPseudoClassPacket } image\n"
+      "    } ifelse\n"
+      "  } ifelse\n"
+      "} bind def\n"
+      "\n"
+      "/DisplayImage\n"
+      "{\n"
+      "  %\n"
+      "  % Display a DirectClass or PseudoClass image.\n"
+      "  %\n"
+      "  % Parameters:\n"
+      "  %   x & y translation.\n"
+      "  %   x & y scale.\n"
+      "  %   label pointsize.\n"
+      "  %   image label.\n"
+      "  %   image columns & rows.\n"
+      "  %   class: 0-DirectClass or 1-PseudoClass.\n"
+      "  %   compression: 0-none or 1-RunlengthEncoded.\n"
+      "  %   hex color packets.\n"
+      "  %\n"
+      "  gsave\n"
+      "  /buffer 512 string def\n"
+      "  /byte 1 string def\n"
+      "  /color_packet 3 string def\n"
+      "  /pixels 768 string def\n"
+      "\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /x exch def\n"
+      "  token pop /y exch def pop\n"
+      "  x y translate\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /x exch def\n"
+      "  token pop /y exch def pop\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /pointsize exch def pop\n",
+    PostscriptEpilog[] =
+      "  x y scale\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /columns exch def\n"
+      "  token pop /rows exch def pop\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /class exch def pop\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /compression exch def pop\n"
+      "  class 0 gt { PseudoClassImage } { DirectClassImage } ifelse\n"
+      "  grestore\n";
 
   char
     buffer[MagickPathExtent],
@@ -1501,7 +1495,6 @@
     compression;
 
   const char
-    *const *s,
     *value;
 
   const StringInfo
@@ -1840,11 +1833,8 @@
         /*
           Output Postscript commands.
         */
-        for (s=PostscriptProlog; *s != (char *) NULL; s++)
-        {
-          (void) FormatLocaleString(buffer,MagickPathExtent,"%s\n",*s);
-          (void) WriteBlobString(image,buffer);
-        }
+        (void) WriteBlob(image,sizeof(PostscriptProlog)-1,
+          (const unsigned char *) PostscriptProlog);
         value=GetImageProperty(image,"label",exception);
         if (value != (const char *) NULL)
           {
@@ -1860,11 +1850,8 @@
               (void) WriteBlobString(image,buffer);
             }
           }
-        for (s=PostscriptEpilog; *s != (char *) NULL; s++)
-        {
-          (void) FormatLocaleString(buffer,MagickPathExtent,"%s\n",*s);
-          (void) WriteBlobString(image,buffer);
-        }
+        (void) WriteBlob(image,sizeof(PostscriptEpilog)-1,
+          (const unsigned char *) PostscriptEpilog);
         if (LocaleCompare(image_info->magick,"PS") == 0)
           (void) WriteBlobString(image,"  showpage\n");
         (void) WriteBlobString(image,"} bind def\n");
diff --git a/coders/ps2.c b/coders/ps2.c
index 1ed77e3..6cd898a 100644
--- a/coders/ps2.c
+++ b/coders/ps2.c
@@ -227,157 +227,151 @@
   ExceptionInfo *exception)
 {
   static const char
-    *const PostscriptProlog[]=
-    {
-      "%%%%BeginProlog",
-      "%%",
-      "%% Display a color image.  The image is displayed in color on",
-      "%% Postscript viewers or printers that support color, otherwise",
-      "%% it is displayed as grayscale.",
-      "%%",
-      "/DirectClassImage",
-      "{",
-      "  %%",
-      "  %% Display a DirectClass image.",
-      "  %%",
-      "  colorspace 0 eq",
-      "  {",
-      "    /DeviceRGB setcolorspace",
-      "    <<",
-      "      /ImageType 1",
-      "      /Width columns",
-      "      /Height rows",
-      "      /BitsPerComponent 8",
-      "      /Decode [0 1 0 1 0 1]",
-      "      /ImageMatrix [columns 0 0 rows neg 0 rows]",
-      "      compression 0 gt",
-      "      { /DataSource pixel_stream %s }",
-      "      { /DataSource pixel_stream %s } ifelse",
-      "    >> image",
-      "  }",
-      "  {",
-      "    /DeviceCMYK setcolorspace",
-      "    <<",
-      "      /ImageType 1",
-      "      /Width columns",
-      "      /Height rows",
-      "      /BitsPerComponent 8",
-      "      /Decode [1 0 1 0 1 0 1 0]",
-      "      /ImageMatrix [columns 0 0 rows neg 0 rows]",
-      "      compression 0 gt",
-      "      { /DataSource pixel_stream %s }",
-      "      { /DataSource pixel_stream %s } ifelse",
-      "    >> image",
-      "  } ifelse",
-      "} bind def",
-      "",
-      "/PseudoClassImage",
-      "{",
-      "  %%",
-      "  %% Display a PseudoClass image.",
-      "  %%",
-      "  %% Parameters:",
-      "  %%   colors: number of colors in the colormap.",
-      "  %%",
-      "  currentfile buffer readline pop",
-      "  token pop /colors exch def pop",
-      "  colors 0 eq",
-      "  {",
-      "    %%",
-      "    %% Image is grayscale.",
-      "    %%",
-      "    currentfile buffer readline pop",
-      "    token pop /bits exch def pop",
-      "    /DeviceGray setcolorspace",
-      "    <<",
-      "      /ImageType 1",
-      "      /Width columns",
-      "      /Height rows",
-      "      /BitsPerComponent bits",
-      "      /Decode [0 1]",
-      "      /ImageMatrix [columns 0 0 rows neg 0 rows]",
-      "      compression 0 gt",
-      "      { /DataSource pixel_stream %s }",
-      "      {",
-      "        /DataSource pixel_stream %s",
-      "        <<",
-      "           /K " CCITTParam,
-      "           /Columns columns",
-      "           /Rows rows",
-      "        >> /CCITTFaxDecode filter",
-      "      } ifelse",
-      "    >> image",
-      "  }",
-      "  {",
-      "    %%",
-      "    %% Parameters:",
-      "    %%   colormap: red, green, blue color packets.",
-      "    %%",
-      "    /colormap colors 3 mul string def",
-      "    currentfile colormap readhexstring pop pop",
-      "    currentfile buffer readline pop",
-      "    [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace",
-      "    <<",
-      "      /ImageType 1",
-      "      /Width columns",
-      "      /Height rows",
-      "      /BitsPerComponent 8",
-      "      /Decode [0 255]",
-      "      /ImageMatrix [columns 0 0 rows neg 0 rows]",
-      "      compression 0 gt",
-      "      { /DataSource pixel_stream %s }",
-      "      { /DataSource pixel_stream %s } ifelse",
-      "    >> image",
-      "  } ifelse",
-      "} bind def",
-      "",
-      "/DisplayImage",
-      "{",
-      "  %%",
-      "  %% Display a DirectClass or PseudoClass image.",
-      "  %%",
-      "  %% Parameters:",
-      "  %%   x & y translation.",
-      "  %%   x & y scale.",
-      "  %%   label pointsize.",
-      "  %%   image label.",
-      "  %%   image columns & rows.",
-      "  %%   class: 0-DirectClass or 1-PseudoClass.",
-      "  %%   colorspace: 0-RGB or 1-CMYK.",
-      "  %%   compression: 0-RLECompression or 1-NoCompression.",
-      "  %%   hex color packets.",
-      "  %%",
-      "  gsave",
-      "  /buffer 512 string def",
-      "  /pixel_stream currentfile def",
-      "",
-      "  currentfile buffer readline pop",
-      "  token pop /x exch def",
-      "  token pop /y exch def pop",
-      "  x y translate",
-      "  currentfile buffer readline pop",
-      "  token pop /x exch def",
-      "  token pop /y exch def pop",
-      "  currentfile buffer readline pop",
-      "  token pop /pointsize exch def pop",
-      (const char *) NULL
-    },
-    *const PostscriptEpilog[]=
-    {
-      "  x y scale",
-      "  currentfile buffer readline pop",
-      "  token pop /columns exch def",
-      "  token pop /rows exch def pop",
-      "  currentfile buffer readline pop",
-      "  token pop /class exch def pop",
-      "  currentfile buffer readline pop",
-      "  token pop /colorspace exch def pop",
-      "  currentfile buffer readline pop",
-      "  token pop /compression exch def pop",
-      "  class 0 gt { PseudoClassImage } { DirectClassImage } ifelse",
-      "  grestore",
-      (const char *) NULL
-    };
+    PostscriptProlog[] =
+      "%%%%BeginProlog\n"
+      "%%\n"
+      "%% Display a color image.  The image is displayed in color on\n"
+      "%% Postscript viewers or printers that support color, otherwise\n"
+      "%% it is displayed as grayscale.\n"
+      "%%\n"
+      "/DirectClassImage\n"
+      "{\n"
+      "  %%\n"
+      "  %% Display a DirectClass image.\n"
+      "  %%\n"
+      "  colorspace 0 eq\n"
+      "  {\n"
+      "    /DeviceRGB setcolorspace\n"
+      "    <<\n"
+      "      /ImageType 1\n"
+      "      /Width columns\n"
+      "      /Height rows\n"
+      "      /BitsPerComponent 8\n"
+      "      /Decode [0 1 0 1 0 1]\n"
+      "      /ImageMatrix [columns 0 0 rows neg 0 rows]\n"
+      "      compression 0 gt\n"
+      "      { /DataSource pixel_stream %s }\n"
+      "      { /DataSource pixel_stream %s } ifelse\n"
+      "    >> image\n"
+      "  }\n"
+      "  {\n"
+      "    /DeviceCMYK setcolorspace\n"
+      "    <<\n"
+      "      /ImageType 1\n"
+      "      /Width columns\n"
+      "      /Height rows\n"
+      "      /BitsPerComponent 8\n"
+      "      /Decode [1 0 1 0 1 0 1 0]\n"
+      "      /ImageMatrix [columns 0 0 rows neg 0 rows]\n"
+      "      compression 0 gt\n"
+      "      { /DataSource pixel_stream %s }\n"
+      "      { /DataSource pixel_stream %s } ifelse\n"
+      "    >> image\n"
+      "  } ifelse\n"
+      "} bind def\n"
+      "\n"
+      "/PseudoClassImage\n"
+      "{\n"
+      "  %%\n"
+      "  %% Display a PseudoClass image.\n"
+      "  %%\n"
+      "  %% Parameters:\n"
+      "  %%   colors: number of colors in the colormap.\n"
+      "  %%\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /colors exch def pop\n"
+      "  colors 0 eq\n"
+      "  {\n"
+      "    %%\n"
+      "    %% Image is grayscale.\n"
+      "    %%\n"
+      "    currentfile buffer readline pop\n"
+      "    token pop /bits exch def pop\n"
+      "    /DeviceGray setcolorspace\n"
+      "    <<\n"
+      "      /ImageType 1\n"
+      "      /Width columns\n"
+      "      /Height rows\n"
+      "      /BitsPerComponent bits\n"
+      "      /Decode [0 1]\n"
+      "      /ImageMatrix [columns 0 0 rows neg 0 rows]\n"
+      "      compression 0 gt\n"
+      "      { /DataSource pixel_stream %s }\n"
+      "      {\n"
+      "        /DataSource pixel_stream %s\n"
+      "        <<\n"
+      "           /K " CCITTParam "\n"
+      "           /Columns columns\n"
+      "           /Rows rows\n"
+      "        >> /CCITTFaxDecode filter\n"
+      "      } ifelse\n"
+      "    >> image\n"
+      "  }\n"
+      "  {\n"
+      "    %%\n"
+      "    %% Parameters:\n"
+      "    %%   colormap: red, green, blue color packets.\n"
+      "    %%\n"
+      "    /colormap colors 3 mul string def\n"
+      "    currentfile colormap readhexstring pop pop\n"
+      "    currentfile buffer readline pop\n"
+      "    [ /Indexed /DeviceRGB colors 1 sub colormap ] setcolorspace\n"
+      "    <<\n"
+      "      /ImageType 1\n"
+      "      /Width columns\n"
+      "      /Height rows\n"
+      "      /BitsPerComponent 8\n"
+      "      /Decode [0 255]\n"
+      "      /ImageMatrix [columns 0 0 rows neg 0 rows]\n"
+      "      compression 0 gt\n"
+      "      { /DataSource pixel_stream %s }\n"
+      "      { /DataSource pixel_stream %s } ifelse\n"
+      "    >> image\n"
+      "  } ifelse\n"
+      "} bind def\n"
+      "\n"
+      "/DisplayImage\n"
+      "{\n"
+      "  %%\n"
+      "  %% Display a DirectClass or PseudoClass image.\n"
+      "  %%\n"
+      "  %% Parameters:\n"
+      "  %%   x & y translation.\n"
+      "  %%   x & y scale.\n"
+      "  %%   label pointsize.\n"
+      "  %%   image label.\n"
+      "  %%   image columns & rows.\n"
+      "  %%   class: 0-DirectClass or 1-PseudoClass.\n"
+      "  %%   colorspace: 0-RGB or 1-CMYK.\n"
+      "  %%   compression: 0-RLECompression or 1-NoCompression.\n"
+      "  %%   hex color packets.\n"
+      "  %%\n"
+      "  gsave\n"
+      "  /buffer 512 string def\n"
+      "  /pixel_stream currentfile def\n"
+      "\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /x exch def\n"
+      "  token pop /y exch def pop\n"
+      "  x y translate\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /x exch def\n"
+      "  token pop /y exch def pop\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /pointsize exch def pop\n",
+    PostscriptEpilog[] =
+      "  x y scale\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /columns exch def\n"
+      "  token pop /rows exch def pop\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /class exch def pop\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /colorspace exch def pop\n"
+      "  currentfile buffer readline pop\n"
+      "  token pop /compression exch def pop\n"
+      "  class 0 gt { PseudoClassImage } { DirectClassImage } ifelse\n"
+      "  grestore\n";
 
   char
     buffer[MagickPathExtent],
@@ -389,7 +383,7 @@
     compression;
 
   const char
-    *const *q,
+    *filter,
     *value;
 
   double
@@ -622,44 +616,38 @@
         /*
           Output Postscript commands.
         */
-        for (q=PostscriptProlog; *q; q++)
+        switch (compression)
         {
-          switch (compression)
+          case NoCompression:
           {
-            case NoCompression:
-            {
-              (void) FormatLocaleString(buffer,MagickPathExtent,*q,
-                "/ASCII85Decode filter");
-              break;
-            }
-            case JPEGCompression:
-            {
-              (void) FormatLocaleString(buffer,MagickPathExtent,*q,
-                "/DCTDecode filter");
-              break;
-            }
-            case LZWCompression:
-            {
-              (void) FormatLocaleString(buffer,MagickPathExtent,*q,
-                "/LZWDecode filter");
-              break;
-            }
-            case FaxCompression:
-            case Group4Compression:
-            {
-              (void) FormatLocaleString(buffer,MagickPathExtent,*q," ");
-              break;
-            }
-            default:
-            {
-              (void) FormatLocaleString(buffer,MagickPathExtent,*q,
-                "/RunLengthDecode filter");
-              break;
-            }
+            filter="/ASCII85Decode filter";
+            break;
           }
-          (void) WriteBlobString(image,buffer);
-          (void) WriteBlobByte(image,'\n');
+          case JPEGCompression:
+          {
+            filter="/DCTDecode filter";
+            break;
+          }
+          case LZWCompression:
+          {
+            filter="/LZWDecode filter";
+            break;
+          }
+          case FaxCompression:
+          case Group4Compression:
+          {
+            filter=" ";
+            break;
+          }
+          default:
+          {
+            filter="/RunLengthDecode filter";
+            break;
+          }
         }
+        (void) FormatLocaleString(buffer,MagickPathExtent,PostscriptProlog,
+          filter,filter,filter,filter,filter,filter,filter,filter);
+        (void) WriteBlob(image,strlen(buffer),buffer);
         value=GetImageProperty(image,"label",exception);
         if (value != (const char *) NULL)
           {
@@ -675,11 +663,8 @@
               (void) WriteBlobString(image,buffer);
             }
           }
-        for (q=PostscriptEpilog; *q; q++)
-        {
-          (void) FormatLocaleString(buffer,MagickPathExtent,"%s\n",*q);
-          (void) WriteBlobString(image,buffer);
-        }
+        (void) WriteBlob(image,sizeof(PostscriptEpilog)-1,
+          (const unsigned char *) PostscriptEpilog);
         if (LocaleCompare(image_info->magick,"PS2") == 0)
           (void) WriteBlobString(image,"  showpage\n");
         (void) WriteBlobString(image,"} bind def\n");