Index: trunk/ppStack/src/ppStackMatch.c
===================================================================
--- trunk/ppStack/src/ppStackMatch.c	(revision 23287)
+++ trunk/ppStack/src/ppStackMatch.c	(revision 23357)
@@ -381,15 +381,31 @@
 
             // Do the image matching
-            if (!pmSubtractionMatch(output, NULL, readout, fake, footprint, stride, regionSize, spacing,
-                                    threshold, stampSources, stampsName, type, size, order, widths, orders,
-                                    inner, ringsOrder, binning, penalty, optimum, optWidths, optOrder,
-                                    optThresh, iter, rej, sysError, maskVal, maskBad, maskPoor, poorFrac,
-                                    badFrac, PM_SUBTRACTION_MODE_1)) {
-                psError(PS_ERR_UNKNOWN, false, "Unable to match images.");
-                psFree(fake);
-                psFree(optWidths);
-                psFree(stampSources);
-                psFree(output);
-                return false;
+            pmSubtractionKernels *kernel = psMetadataLookupPtr(&mdok, readout->analysis,
+                                                               PM_SUBTRACTION_ANALYSIS_KERNEL); // Conv kernel
+            if (kernel) {
+                if (!pmSubtractionMatchPrecalc(output, NULL, readout, fake, output->analysis,
+                                               stride, sysError, maskVal, maskBad, maskPoor,
+                                               poorFrac, badFrac)) {
+                    psError(PS_ERR_UNKNOWN, false, "Unable to convolve images.");
+                    psFree(fake);
+                    psFree(optWidths);
+                    psFree(stampSources);
+                    psFree(output);
+                    return false;
+                }
+            } else {
+                if (!pmSubtractionMatch(output, NULL, readout, fake, footprint, stride, regionSize, spacing,
+                                        threshold, stampSources, stampsName, type, size, order, widths,
+                                        orders, inner, ringsOrder, binning, penalty,
+                                        optimum, optWidths, optOrder, optThresh, iter, rej, sysError,
+                                        maskVal, maskBad, maskPoor, poorFrac, badFrac,
+                                        PM_SUBTRACTION_MODE_1)) {
+                    psError(PS_ERR_UNKNOWN, false, "Unable to match images.");
+                    psFree(fake);
+                    psFree(optWidths);
+                    psFree(stampSources);
+                    psFree(output);
+                    return false;
+                }
             }
 
