Index: /trunk/ppBackground/src/ppBackgroundCamera.c
===================================================================
--- /trunk/ppBackground/src/ppBackgroundCamera.c	(revision 28281)
+++ /trunk/ppBackground/src/ppBackgroundCamera.c	(revision 28282)
@@ -68,4 +68,11 @@
     output->save = true;
 
+    pmFPAfile *outMask = pmFPAfileDefineOutput(data->config, output->fpa, "PPBACKGROUND.OUTPUT.MASK");
+    if (!outMask) {
+        psError(psErrorCodeLast(), false, "Unable to define output.");
+        return false;
+    }
+    outMask->save = true;
+
 #if 0
     // Now the camera has been determined, we can read the recipe
Index: /trunk/ppBackground/src/ppBackgroundRestore.c
===================================================================
--- /trunk/ppBackground/src/ppBackgroundRestore.c	(revision 28281)
+++ /trunk/ppBackground/src/ppBackgroundRestore.c	(revision 28282)
@@ -22,5 +22,5 @@
         return false;
     }
-    psImage *image = ro->image;                             // Image to correct
+    psImage *image = ro->image, *mask = ro->mask;           // Image to correct
     int numCols = image->numCols, numRows = image->numRows; // Size of image
 
@@ -58,7 +58,9 @@
         pmReadout *patternRO = pmFPAviewThisReadout(view, pattern->parent); // Readout with pattern
         psImage *patternImage = patternRO->image; // Image with pattern
+        psImage *patternMask = patternRO->mask;   // Mask for pattern
         for (int y = 0; y < numRows; y++) {
             for (int x = 0; x < numCols; x++) {
                 image->data.F32[y][x] += patternImage->data.F32[y][x];
+                mask->data.PS_TYPE_IMAGE_MASK_DATA[y][x] |= patternMask->data.PS_TYPE_IMAGE_MASK_DATA[y][x];
             }
         }
