diff --git a/coders/miff.c b/coders/miff.c
index 5d7b5c9..30b4b4d 100644
--- a/coders/miff.c
+++ b/coders/miff.c
@@ -688,7 +688,7 @@
                       MagickFalse,options);
                     if (colorspace < 0)
                       break;
-                    image->colorspace=(ColorspaceType) colorspace;
+                    (void) SetImageColorspace(image,(ColorspaceType) colorspace,                      exception);
                     break;
                   }
                 if (LocaleCompare(keyword,"compression") == 0)
diff --git a/coders/mpc.c b/coders/mpc.c
index 0b71122..429ce79 100644
--- a/coders/mpc.c
+++ b/coders/mpc.c
@@ -388,7 +388,7 @@
                       MagickFalse,options);
                     if (colorspace < 0)
                       break;
-                    image->colorspace=(ColorspaceType) colorspace;
+                    (void) SetImageColorspace(image,(ColorspaceType) colorspace,                      exception);
                     break;
                   }
                 if (LocaleCompare(keyword,"compression") == 0)
diff --git a/coders/png.c b/coders/png.c
index f3d83d1..bc9c4df 100644
--- a/coders/png.c
+++ b/coders/png.c
@@ -2280,6 +2280,14 @@
   image->depth=ping_bit_depth;
   image->depth=GetImageQuantumDepth(image,MagickFalse);
   image->interlace=ping_interlace_method != 0 ? PNGInterlace : NoInterlace;
+  if (((int) ping_color_type == PNG_COLOR_TYPE_GRAY) ||
+      ((int) ping_color_type == PNG_COLOR_TYPE_GRAY_ALPHA))
+    {
+      image->rendering_intent=UndefinedIntent;
+      image->gamma=1.000;
+      (void) ResetMagickMemory(&image->chromaticity,0,
+        sizeof(image->chromaticity));
+    }
   if (logging != MagickFalse)
     {
       (void) LogMagickEvent(CoderEvent,GetMagickModule(),