diff --git a/coders/vicar.c b/coders/vicar.c
index bfac89b..345c6c5 100644
--- a/coders/vicar.c
+++ b/coders/vicar.c
@@ -149,6 +149,9 @@
     keyword[MaxTextExtent],
     value[MaxTextExtent];
 
+  const void
+    *pixels;
+
   Image
     *image;
 
@@ -175,9 +178,6 @@
     count,
     y;
 
-  unsigned char
-    *pixels;
-
   /*
     Open image file.
   */
@@ -297,14 +297,16 @@
   quantum_info=AcquireQuantumInfo(image_info,image);
   if (quantum_info == (QuantumInfo *) NULL)
     ThrowReaderException(ResourceLimitError,"MemoryAllocationFailed");
-  pixels=GetQuantumPixels(quantum_info);
   length=GetQuantumExtent(image,quantum_info,quantum_type);
   for (y=0; y < (ssize_t) image->rows; y++)
   {
     q=QueueAuthenticPixels(image,0,y,image->columns,1,exception);
     if (q == (Quantum *) NULL)
       break;
-    count=ReadBlob(image,length,pixels);
+    pixels=ReadBlobStream(image,length,GetQuantumPixels(quantum_info),
+      &count);
+    if (count != (ssize_t) length)
+      break;
     (void) ImportQuantumPixels(image,(CacheView *) NULL,quantum_info,
       quantum_type,pixels,exception);
     if (SyncAuthenticPixels(image,exception) == MagickFalse)