diff --git a/coders/webp.c b/coders/webp.c
index 1bcb2cc..ccd07e7 100644
--- a/coders/webp.c
+++ b/coders/webp.c
@@ -163,6 +163,7 @@
     ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
   image->columns=(size_t) width;
   image->rows=(size_t) height;
+  image->matte=MagickTrue;
   p=pixels;
   for (y=0; y < (ssize_t) image->rows; y++)
   {
@@ -175,8 +176,6 @@
       SetPixelGreen(image,ScaleCharToQuantum(*p++),q);
       SetPixelBlue(image,ScaleCharToQuantum(*p++),q);
       SetPixelAlpha(image,ScaleCharToQuantum(*p++),q);
-      if (GetPixelAlpha(image,q) != OpaqueAlpha)
-        image->matte=MagickTrue;
       q+=GetPixelChannels(image);
     }
     if (SyncAuthenticPixels(image,exception) == MagickFalse)
@@ -357,8 +356,8 @@
   /*
     Allocate memory for pixels.
   */
-  pixels=(unsigned char *) AcquireQuantumMemory(image->columns,
-    (image->matte != MagickFalse ? 4 : 3)*image->rows*sizeof(*pixels));
+  pixels=(unsigned char *) AcquireQuantumMemory(image->columns,4*image->rows*
+    sizeof(*pixels));
   if (pixels == (unsigned char *) NULL)
     ThrowWriterException(ResourceLimitError,"MemoryAllocationFailed");
   /*
@@ -375,9 +374,8 @@
       *q++=ScaleQuantumToChar(GetPixelRed(image,p));
       *q++=ScaleQuantumToChar(GetPixelGreen(image,p));
       *q++=ScaleQuantumToChar(GetPixelBlue(image,p));
-      if (image->matte != MagickFalse)
-        *q++=ScaleQuantumToChar((Quantum) (image->matte != MagickFalse ?
-          GetPixelAlpha(image,p) : OpaqueAlpha));
+      *q++=ScaleQuantumToChar((Quantum) (image->matte != MagickFalse ?
+        GetPixelAlpha(image,p) : OpaqueAlpha));
       p+=GetPixelChannels(image);
     }
     status=SetImageProgress(image,SaveImageTag,(MagickOffsetType) y,