diff --git a/wand/mogrify.c b/wand/mogrify.c
index 73227d3..874f572 100644
--- a/wand/mogrify.c
+++ b/wand/mogrify.c
@@ -4150,13 +4150,18 @@
           }
         if (LocaleCompare("affine",option+1) == 0)
           {
+            KernelInfo
+              *kernel_info;
+
             if (*option == '+')
               break;
             i++;
             if (i == (ssize_t) argc)
               ThrowMogrifyException(OptionError,"MissingArgument",option);
-            if (IsGeometry(argv[i]) == MagickFalse)
-              ThrowMogrifyInvalidArgumentException(option,argv[i]);
+            kernel_info=AcquireKernelInfo(argv[i]);
+            if (kernel_info == (KernelInfo *) NULL)
+              ThrowConvertInvalidArgumentException(option,argv[i]);
+            kernel_info=DestroyKernelInfo(kernel_info);
             break;
           }
         if (LocaleCompare("alpha",option+1) == 0)
@@ -4426,13 +4431,18 @@
           }
         if (LocaleCompare("color-matrix",option+1) == 0)
           {
+            KernelInfo
+              *kernel_info;
+
             if (*option == '+')
               break;
             i++;
             if (i == (ssize_t) (argc-1))
               ThrowMogrifyException(OptionError,"MissingArgument",option);
-            if (IsGeometry(argv[i]) == MagickFalse)
-              ThrowMogrifyInvalidArgumentException(option,argv[i]);
+            kernel_info=AcquireKernelInfo(argv[i]);
+            if (kernel_info == (KernelInfo *) NULL)
+              ThrowConvertInvalidArgumentException(option,argv[i]);
+            kernel_info=DestroyKernelInfo(kernel_info);
             break;
           }
         if (LocaleCompare("colors",option+1) == 0)
@@ -4511,34 +4521,18 @@
             char
               token[MaxTextExtent];
 
+            KernelInfo
+              *kernel_info;
+
             if (*option == '+')
               break;
             i++;
             if (i == (ssize_t) argc)
               ThrowMogrifyException(OptionError,"MissingArgument",option);
-#if 1
-            (void) token;
-            if (IsGeometry(argv[i]) == MagickFalse)
-              ThrowMogrifyInvalidArgumentException(option,argv[i]);
-#else
-            /* Allow the use of built-in kernels like 'gaussian'
-             * These may not work for kernels with 'nan' values, like 'diamond'
-             */
-            GetMagickToken(argv[i],NULL,token);
-            if ( isalpha((int)token[0]) )
-              {
-                ssize_t
-                op;
-
-                op=ParseMagickOption(MagickKernelOptions,MagickFalse,token);
-                if (op < 0)
-                  ThrowMogrifyException(OptionError,"UnrecognizedKernelType",
-                       token);
-              }
-            /* geometry current returns invalid if 'nan' values are used */
-            else if (IsGeometry(argv[i]) == MagickFalse)
-              ThrowMogrifyInvalidArgumentException(option,argv[i]);
-#endif
+            kernel_info=AcquireKernelInfo(argv[i]);
+            if (kernel_info == (KernelInfo *) NULL)
+              ThrowConvertInvalidArgumentException(option,argv[i]);
+            kernel_info=DestroyKernelInfo(kernel_info);
             break;
           }
         if (LocaleCompare("crop",option+1) == 0)
@@ -5408,12 +5402,15 @@
           }
         if (LocaleCompare("morphology",option+1) == 0)
           {
-            ssize_t
-              op;
-
             char
               token[MaxTextExtent];
 
+            KernelInfo
+              *kernel_info;
+
+            ssize_t
+              op;
+
             i++;
             if (i == (ssize_t) argc)
               ThrowMogrifyException(OptionError,"MissingArgument",option);
@@ -5425,14 +5422,10 @@
             i++;
             if (i == (ssize_t) (argc-1))
               ThrowMogrifyException(OptionError,"MissingArgument",option);
-            GetMagickToken(argv[i],NULL,token);
-            if (isalpha((int) ((unsigned char) *token)) != 0)
-              {
-                op=ParseMagickOption(MagickKernelOptions,MagickFalse,token);
-                if (op < 0)
-                  ThrowMogrifyException(OptionError,"UnrecognizedKernelType",
-                    token);
-              }
+            kernel_info=AcquireKernelInfo(argv[i]);
+            if (kernel_info == (KernelInfo *) NULL)
+              ThrowConvertInvalidArgumentException(option,argv[i]);
+            kernel_info=DestroyKernelInfo(kernel_info);
             break;
           }
         if (LocaleCompare("mosaic",option+1) == 0)