diff --git a/coders/pcl.c b/coders/pcl.c
index 22b5b62..ab0ef23 100644
--- a/coders/pcl.c
+++ b/coders/pcl.c
@@ -650,6 +650,9 @@
   char
     buffer[MaxTextExtent];
 
+  const char
+    *option;
+
   long
     y;
 
@@ -782,7 +785,12 @@
             (void) WriteBlobString(image,buffer);
           }
         }
-    (void) WriteBlobString(image,"\033*r1A");  /* start raster graphics */
+    option=GetImageOption(image_info,"pcl:fit-to-page");
+    if ((option != (const char *) NULL) &&
+        (IsMagickTrue(option) != MagickFalse))
+      (void) WriteBlobString(image,"\033*r3A");
+    else
+      (void) WriteBlobString(image,"\033*r1A");  /* start raster graphics */
     (void) WriteBlobString(image,"\033*b0Y");  /* set y offset */
     length=(image->columns*bits_per_pixel+7)/8;
     pixels=(unsigned char *) AcquireQuantumMemory(length,sizeof(*pixels));
diff --git a/magick/cache.c b/magick/cache.c
index 30ca4dc..ac19da1 100644
--- a/magick/cache.c
+++ b/magick/cache.c
@@ -4122,7 +4122,7 @@
     clone_image;
 
   long
-    pagesize;
+    page_size;
 
   MagickBooleanType
     status;
@@ -4134,14 +4134,7 @@
   assert(image->cache != (void *) NULL);
   assert(filename != (const char *) NULL);
   assert(offset != (MagickOffsetType *) NULL);
-  pagesize=(-1);
-#if defined(MAGICKCORE_HAVE_SYSCONF) && defined(_SC_PAGESIZE)
-  pagesize=sysconf(_SC_PAGESIZE);
-#elif defined(MAGICKCORE_HAVE_GETPAGESIZE) && defined(MAGICKCORE_POSIX_SUPPORT)
-  pagesize=getpagesize();
-#endif
-  if (pagesize <= 0)
-    pagesize=4096;
+  page_size=GetMagickPageSize();
   cache_info=(CacheInfo *) image->cache;
   assert(cache_info->signature == MagickSignature);
   if (attach != MagickFalse)
@@ -4158,7 +4151,7 @@
       cache_info->offset=(*offset);
       if (OpenPixelCache(image,ReadMode,exception) == MagickFalse)
         return(MagickFalse);
-      *offset+=cache_info->length+pagesize-(cache_info->length % pagesize);
+      *offset+=cache_info->length+page_size-(cache_info->length % page_size);
       return(MagickTrue);
     }
   if ((cache_info->mode != ReadMode) && (cache_info->type != MemoryCache) &&
@@ -4179,8 +4172,8 @@
             {
               (void) CopyMagickString(cache_info->cache_filename,filename,
                 MaxTextExtent);
-              *offset+=cache_info->length+pagesize-(cache_info->length %
-                pagesize);
+              *offset+=cache_info->length+page_size-(cache_info->length %
+                page_size);
               (void) UnlockSemaphoreInfo(cache_info->semaphore);
               cache_info=(CacheInfo *) ReferencePixelCache(cache_info);
               if (image->debug != MagickFalse)
@@ -4209,7 +4202,7 @@
       if (status != MagickFalse)
        status=ClonePixelCachePixels(cache_info,clone_info,&image->exception);
     }
-  *offset+=cache_info->length+pagesize-(cache_info->length % pagesize);
+  *offset+=cache_info->length+page_size-(cache_info->length % page_size);
   clone_info=(CacheInfo *) DestroyPixelCache(clone_info);
   return(status);
 }
diff --git a/magick/resource.c b/magick/resource.c
index 6ca29d8..9686917 100644
--- a/magick/resource.c
+++ b/magick/resource.c
@@ -707,12 +707,7 @@
   /*
     Set Magick resource limits.
   */
-  pagesize=(-1);
-#if defined(MAGICKCORE_HAVE_SYSCONF) && defined(_SC_PAGESIZE)
-  pagesize=sysconf(_SC_PAGESIZE);
-#elif defined(MAGICKCORE_HAVE_GETPAGESIZE) && defined(MAGICKCORE_POSIX_SUPPORT)
-  pagesize=getpagesize();
-#endif
+  pagesize=GetMagickPageSize();
   pages=(-1);
 #if defined(MAGICKCORE_HAVE_SYSCONF) && defined(_SC_PHYS_PAGES)
   pages=sysconf(_SC_PHYS_PAGES);
diff --git a/magick/utility.c b/magick/utility.c
index 84ffd97..9cb59b4 100644
--- a/magick/utility.c
+++ b/magick/utility.c
@@ -970,6 +970,43 @@
 %                                                                             %
 %                                                                             %
 %                                                                             %
+%   G e t M a g i c k P a g e S i z e                                         %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  GetMagickPageSize() returns the memory page size.
+%
+%  The format of the GetMagickPageSize method is:
+%
+%      long GetMagickPageSize()
+%
+*/
+MagickExport long GetMagickPageSize(void)
+{
+  static long
+    page_size = -1;
+
+  if (page_size > 0)
+    return(page_size);
+#if defined(MAGICKCORE_HAVE_SYSCONF) && defined(_SC_PAGE_SIZE)
+  page_size=sysconf(_SC_PAGE_SIZE);
+#endif
+#if defined(MAGICKCORE_HAVE_GETPAGESIZE)
+  if (page_size <= 0)
+    page_size=getpagesize();
+#endif
+  if (page_size <= 0)
+    page_size=16384;
+  return(page_size);
+}
+
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
 %   G e t P a t h A t t r i b u t e s                                         %
 %                                                                             %
 %                                                                             %
diff --git a/magick/utility.h b/magick/utility.h
index 0ba2e6f..d650ae1 100644
--- a/magick/utility.h
+++ b/magick/utility.h
@@ -46,6 +46,9 @@
 extern MagickExport int
   SystemCommand(const MagickBooleanType,const char *,ExceptionInfo *);
 
+extern MagickExport long
+  GetMagickPageSize(void);
+
 extern MagickExport MagickBooleanType
   AcquireUniqueFilename(char *),
   AcquireUniqueSymbolicLink(const char *,char *),