Index: trunk/ppImage/src/ppImageDetrendReadout.c
===================================================================
--- trunk/ppImage/src/ppImageDetrendReadout.c	(revision 10415)
+++ trunk/ppImage/src/ppImageDetrendReadout.c	(revision 13461)
@@ -15,4 +15,15 @@
     // find the currently selected readout
     pmReadout *input = pmFPAfileThisReadout(config->files, view, "PPIMAGE.INPUT");
+
+    // Masking on the basis of pixel value needs to be done before anything else, so the values are pristine.
+    if (options->doMask || options->doShutter || options->doFlat || options->doPhotom) {
+        // create the target mask and weight images
+        pmReadoutGenerateMaskWeight(input, true);
+    }
+    // apply the externally supplied mask to the input->mask pixels
+    if (options->doMask) {
+        pmReadout *mask = pmFPAfileThisReadout(config->files, detview, "PPIMAGE.MASK");
+        pmMaskBadPixels(input, mask, options->maskValue);
+    }
 
 # if 0
@@ -41,15 +52,4 @@
     }
 
-    if (options->doMask || options->doShutter || options->doFlat || options->doPhotom) {
-        // create the target mask and weight images
-        pmReadoutGenerateMaskWeight(input, true);
-    }
-
-    // apply the externally supplied mask to the input->mask pixels
-    if (options->doMask) {
-        pmReadout *mask = pmFPAfileThisReadout(config->files, detview, "PPIMAGE.MASK");
-        pmMaskBadPixels(input, mask, options->maskValue);
-    }
-
     // Shutter correction
     if (options->doShutter) {
@@ -62,5 +62,4 @@
     // Flat-field correction (no options used?)
     if (options->doFlat) {
-        pmReadoutGenerateMaskWeight(input, true);
         pmReadout *flat = pmFPAfileThisReadout(config->files, detview, "PPIMAGE.FLAT");
         if (!pmFlatField(input, flat)) {
