Index: trunk/Ohana/src/kapa2/src/SetColorScale.c
===================================================================
--- trunk/Ohana/src/kapa2/src/SetColorScale.c	(revision 40543)
+++ trunk/Ohana/src/kapa2/src/SetColorScale.c	(revision 40544)
@@ -104,4 +104,6 @@
   unsigned short maxGreen = graphic[0].nGreen - 1;
 
+  unsigned short NANValue = graphic[0].Npixels - 1;
+  
   // set start & slope for red (channel 0)
   if (image[0].channel[KAPA_CHANNEL_RED].range != 0.0) {
@@ -141,13 +143,30 @@
 
   // convert pixel data values to pixel index values (0 - Npixel)
+  // NOTE: a nan value in any of the 3 channels will result in a nan value for output
   for (i = 0; i < nPixels; i++, rData++, bData++, gData++, oData++) {
+
+    // RED channel
+    if (isnan(*rData) || isinf(*rData)) {
+      *oData = NANValue;
+      continue;
+    }
     rValue = *rData * redSlope   - redStart;
     if (rValue < 0) rValue = 0;
     if (rValue > maxRed) rValue = maxRed;
 
+    // BLUE channel
+    if (isnan(*bData) || isinf(*bData)) {
+      *oData = NANValue;
+      continue;
+    }
     bValue = *bData * blueSlope  - blueStart;
     if (bValue < 0) bValue = 0;
     if (bValue > maxBlue) bValue = maxBlue;
 
+    // GREEN channel
+    if (isnan(*gData) || isinf(*gData)) {
+      *oData = NANValue;
+      continue;
+    }
     gValue = *gData * greenSlope - greenStart;
     if (gValue < 0) gValue = 0;
@@ -183,5 +202,6 @@
   // XXX a bit bogus: we are going to store a special color at Npixels-1 for 
   // marking the NAN pixels.  
-  { 
+  // XXX : isn't this set now by the user ?
+  if (0) { 
       // XXX set pure green for now
       graphic[0].cmap[graphic[0].Npixels-1].red = 0;
