Index: branches/pap/psModules/src/imcombine/pmSubtraction.c
===================================================================
--- branches/pap/psModules/src/imcombine/pmSubtraction.c	(revision 26707)
+++ branches/pap/psModules/src/imcombine/pmSubtraction.c	(revision 26717)
@@ -188,5 +188,11 @@
     if (normalise) {
         // Put in the normalisation component
-        kernel->kernel[0][0] += (wantDual ? 1.0 : p_pmSubtractionSolutionNorm(kernels));
+//        kernel->kernel[0][0] += (wantDual ? 1.0 : p_pmSubtractionSolutionNorm(kernels));
+        double value = wantDual ? 1.0 : p_pmSubtractionSolutionNorm(kernels);
+        for (int v = -size; v <= size; v++) {
+            for (int u = -size; u <= size; u++) {
+                kernel->kernel[v][u] += value * kernels->norm->kernel[v][u];
+            }
+        }
     }
 
@@ -754,7 +760,9 @@
       case PM_SUBTRACTION_MODE_1:
         stamp->convolutions1 = convolveStamp(stamp->convolutions1, stamp->image1, kernels, footprint);
+        stamp->normConv = p_pmSubtractionConvolveStampPrecalc(stamp->image1, kernels->norm);
         break;
       case PM_SUBTRACTION_MODE_2:
         stamp->convolutions2 = convolveStamp(stamp->convolutions2, stamp->image2, kernels, footprint);
+        stamp->normConv = p_pmSubtractionConvolveStampPrecalc(stamp->image2, kernels->norm);
         break;
       case PM_SUBTRACTION_MODE_UNSURE:
@@ -762,4 +770,5 @@
         stamp->convolutions1 = convolveStamp(stamp->convolutions1, stamp->image1, kernels, footprint);
         stamp->convolutions2 = convolveStamp(stamp->convolutions2, stamp->image2, kernels, footprint);
+        stamp->normConv = p_pmSubtractionConvolveStampPrecalc(stamp->image1, kernels->norm);
         break;
       default:
@@ -908,4 +917,7 @@
                 psFree(stamp->vector);
                 stamp->vector = NULL;
+
+                psFree(stamp->normConv);
+                stamp->normConv = NULL;
             } else {
                 numGood++;
