Index: /trunk/magic/remove/src/streaksremove.c
===================================================================
--- /trunk/magic/remove/src/streaksremove.c	(revision 20806)
+++ /trunk/magic/remove/src/streaksremove.c	(revision 20807)
@@ -336,4 +336,6 @@
         sf->tiles->data.S32[2] = 1;
     }
+
+    sf->transparentStreaks = psMetadataLookupF64(&status, config->arguments, "TRANSPARENT_STREAKS");
 
     return sf;
@@ -495,4 +497,16 @@
             "skip excising of non warped pixels", true);
     }
+
+    if ((argnum = psArgumentGet(argc, argv, "-transparent"))) {
+        if (gotReplace) {
+            psError(PS_ERR_UNKNOWN, true, "cannot make transparent streaks if -replace");
+            return NULL;
+        }
+        psArgumentRemove(argnum, &argc, argv);
+        double transparentStreaks = atof(argv[argnum]);
+        psMetadataAddF64(config->arguments, PS_LIST_TAIL, "TRANSPARENT_STREAKS", 0,
+            "value to adjust excised pixels", transparentStreaks);
+        psArgumentRemove(argnum, &argc, argv);
+    }
         
     // if skycells are not provided then we have to execise all pixels  unless -keepnonwarped
@@ -881,5 +895,13 @@
 setupImageRefs(sFile *out, sFile *recovery, sFile *in, int extnum, bool exciseAll)
 {
-    if (exciseAll) {
+    if (!exciseAll) {
+        // set output image to be the input image
+        out->image = (psImage*) psMemIncrRefCounter(in->image);
+        if (recovery) {
+            // create a recovery image initialized to NAN
+            createNewImage(recovery, in, extnum, NAN);
+        }
+    } else {
+        // Excising all pixels in the input
         // set the output to an image all NANs
         createNewImage(out, in, extnum, NAN);
@@ -887,11 +909,4 @@
             // save the whole input as the recovery image
             recovery->image = (psImage*) psMemIncrRefCounter(in->image);
-        }
-    } else {
-        // output is the input image
-        out->image = (psImage*) psMemIncrRefCounter(in->image);
-        if (recovery) {
-            // create a recovery image initialized to zero
-            createNewImage(recovery, in, extnum, 0);
         }
     }
@@ -1215,4 +1230,6 @@
         }
         psFree(command);
+        // XXX: shouldn't I be doing mv in->resolved_name.bak out->resolved_name
+        // to complete the swap if !remove?
     }
 
@@ -1303,15 +1320,14 @@
     }
 
-#define ACTUALLY_MASK_PIXEL
-#ifdef ACTUALLY_MASK_PIXEL
-    psImageSet (sfiles->outImage->image,  x, y, NAN);
-#else
-    if (newMaskValue == MASK_BAD_WARP) {
+    if (sfiles->transparentStreaks == 0) {
         psImageSet (sfiles->outImage->image,  x, y, NAN);
     } else {
-        // as a visualization aid don't mask the pixel, just reduce it in intensity a bit
-        psImageSet (sfiles->outImage->image,  x, y, imageValue - 50);
-    }
-#endif
+        if (newMaskValue == MASK_BAD_WARP) {
+            psImageSet (sfiles->outImage->image,  x, y, NAN);
+        } else {
+            // as a visualization aid don't mask the pixel, just change the intensity
+            psImageSet (sfiles->outImage->image,  x, y, imageValue + sfiles->transparentStreaks);
+        }
+    }
 
     // TODO:
Index: /trunk/magic/remove/src/streaksremove.h
===================================================================
--- /trunk/magic/remove/src/streaksremove.h	(revision 20806)
+++ /trunk/magic/remove/src/streaksremove.h	(revision 20807)
@@ -67,7 +67,5 @@
     psImage *warpedPixels;
     psVector    *tiles;
-    float   recoveryImageValue;
-    float   recoveryMaskValue;
-    float   recoveryWeightValue;
+    double  transparentStreaks;
 } streakFiles;
 
