diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c
index 3424178..152cbc8 100644
--- a/MagickWand/mogrify.c
+++ b/MagickWand/mogrify.c
@@ -617,6 +617,9 @@
   ChannelType
     channel;
 
+  CompositeOperator
+    compose;
+
   const char
     *format,
     *option;
@@ -672,6 +675,7 @@
   SetGeometryInfo(&geometry_info);
   GetPixelInfo(*image,&fill);
   SetPixelInfoPacket(*image,&(*image)->background_color,&fill);
+  compose=(*image)->compose;
   interpolate_method=UndefinedInterpolatePixel;
   channel=mogrify_info->channel;
   format=GetImageOption(mogrify_info,"format");
@@ -923,7 +927,7 @@
             flags=ParsePageGeometry(*image,argv[i+1],&geometry,exception);
             if ((flags & SigmaValue) == 0)
               geometry.height=geometry.width;
-            mogrify_image=BorderImage(*image,&geometry,exception);
+            mogrify_image=BorderImage(*image,&geometry,compose,exception);
             break;
           }
         if (LocaleCompare("bordercolor",option+1) == 0)
@@ -1170,6 +1174,13 @@
             InheritException(exception,&(*image)->exception);
             break;
           }
+        if (LocaleCompare("compose",option+1) == 0)
+          {
+            (void) SyncImageSettings(mogrify_info,*image);
+            compose=(CompositeOperator) ParseCommandOption(MagickComposeOptions,
+              MagickFalse,argv[i+1]);
+            break;
+          }
         if (LocaleCompare("contrast",option+1) == 0)
           {
             (void) SyncImageSettings(mogrify_info,*image);
@@ -1624,7 +1635,7 @@
             frame_info.y=(ssize_t) frame_info.height;
             frame_info.width=(*image)->columns+2*frame_info.width;
             frame_info.height=(*image)->rows+2*frame_info.height;
-            mogrify_image=FrameImage(*image,&frame_info,exception);
+            mogrify_image=FrameImage(*image,&frame_info,compose,exception);
             break;
           }
         if (LocaleCompare("function",option+1) == 0)