diff --git a/wand/mogrify.c b/wand/mogrify.c
index 9bf316d..2275532 100644
--- a/wand/mogrify.c
+++ b/wand/mogrify.c
@@ -2993,8 +2993,8 @@
             if ((flags & PsiValue) == 0)
               geometry_info.psi=4.0;
             shadow_image=ShadowImage(*image,geometry_info.rho,
-              geometry_info.sigma,(long) (geometry_info.xi+0.5),(long)
-              (geometry_info.psi+0.5),exception);
+              geometry_info.sigma,(long) floor(geometry_info.xi+0.5),(long)
+              floor(geometry_info.psi+0.5),exception);
             if (shadow_image == (Image *) NULL)
               break;
             *image=DestroyImage(*image);
@@ -3499,8 +3499,8 @@
             if ((flags & PsiValue) == 0)
               geometry_info.psi=0.1*(*image)->rows;
             vignette_image=VignetteImage(*image,geometry_info.rho,
-              geometry_info.sigma,(long) (geometry_info.xi+0.5),(long)
-              (geometry_info.psi+0.5),exception);
+              geometry_info.sigma,(long) floor(geometry_info.xi+0.5),(long)
+              floor(geometry_info.psi+0.5),exception);
             if (vignette_image == (Image *) NULL)
               break;
             *image=DestroyImage(*image);
@@ -8374,6 +8374,9 @@
       {
         if (LocaleCompare("write",option+1) == 0)
           {
+            char 
+              key[MaxTextExtent];
+
             Image
               *write_images;
 
@@ -8381,6 +8384,8 @@
               *write_info;
 
             (void) SyncImagesSettings(image_info,*images);
+            (void) FormatMagickString(key,MaxTextExtent,"cache:%s",argv[i+1]);
+            (void) DeleteImageRegistry(key);
             write_images=(*images);
             if (*option == '+')
               write_images=CloneImageList(*images,exception);