diff --git a/MagickCore/quantum-export.c b/MagickCore/quantum-export.c
index b20d437..fd8a70f 100644
--- a/MagickCore/quantum-export.c
+++ b/MagickCore/quantum-export.c
@@ -1362,21 +1362,21 @@
               for (x=0; x < (ssize_t) (number_pixels-2); x+=3)
               {
                 pixel=(unsigned int) (
-                  ScaleQuantumToAny(GetPixelIntensity(image,p+2),range) << 22 |
-                  ScaleQuantumToAny(GetPixelIntensity(image,p+1),range) << 12 |
-                  ScaleQuantumToAny(GetPixelIntensity(image,p+0),range) << 2);
+                  ScaleQuantumToAny(GetPixelIntensity(image,p+2*channels),range) << 22 |
+                  ScaleQuantumToAny(GetPixelIntensity(image,p+channels),range) << 12 |
+                  ScaleQuantumToAny(GetPixelIntensity(image,p),range) << 2);
                 q=PopLongPixel(endian,pixel,q);
-                p+=3;
+                p+=3*channels;
                 q+=quantum_info->pad;
               }
               if (x < (ssize_t) number_pixels)
                 {
                   pixel=0U;
                   if (x++ < (ssize_t) (number_pixels-1))
-                    pixel|=ScaleQuantumToAny(GetPixelIntensity(image,p+1),
-                      range) << 12;
+                    pixel|=ScaleQuantumToAny(GetPixelIntensity(image,p+channels),
+                  range) << 12;
                   if (x++ < (ssize_t) number_pixels)
-                    pixel|=ScaleQuantumToAny(GetPixelIntensity(image,p+0),
+                    pixel|=ScaleQuantumToAny(GetPixelIntensity(image,p),
                       range) << 2;
                   q=PopLongPixel(endian,pixel,q);
                 }
diff --git a/coders/dpx.c b/coders/dpx.c
index f8ab206..e2e417e 100644
--- a/coders/dpx.c
+++ b/coders/dpx.c
@@ -57,6 +57,7 @@
 #include "MagickCore/monitor.h"
 #include "MagickCore/monitor-private.h"
 #include "MagickCore/option.h"
+#include "MagickCore/pixel-accessor.h"
 #include "MagickCore/profile.h"
 #include "MagickCore/property.h"
 #include "MagickCore/quantum-private.h"
@@ -1809,8 +1810,7 @@
     }
   extent=GetBytesPerRow(image->columns,image->matte != MagickFalse ? 4UL : 3UL,
     image->depth,MagickTrue);
-  if ((image_info->type != UndefinedType) &&
-      (image_info->type != TrueColorType) && (image->matte == MagickFalse) &&
+  if ((image_info->type != TrueColorType) && (image->matte == MagickFalse) &&
       (IsImageGray(image,exception) != MagickFalse))
     {
       quantum_type=GrayQuantum;