Index: /issm/trunk-jpl/src/m/plot/checkplotoptions.js
===================================================================
--- /issm/trunk-jpl/src/m/plot/checkplotoptions.js	(revision 19740)
+++ /issm/trunk-jpl/src/m/plot/checkplotoptions.js	(revision 19741)
@@ -229,11 +229,3 @@
 	   }
 	}
-
-	//Log scale (LOTS of changes to be performed
-	if (options.exist('log')){
-	   if (options.exist('caxis')){
-		   options.changefieldvalue('caxis',Math.log(options.getfieldvalue('caxis'))/Math.log(options.getfieldvalue('log')));
-	   }
-	   options.changefieldvalue('cutoff',Math.log(options.getfieldvalue('cutoff',1.5))/Math.log(options.getfieldvalue('log')));
-	}
 }
Index: /issm/trunk-jpl/src/m/plot/plot_manager.js
===================================================================
--- /issm/trunk-jpl/src/m/plot/plot_manager.js	(revision 19740)
+++ /issm/trunk-jpl/src/m/plot/plot_manager.js	(revision 19741)
@@ -6,4 +6,5 @@
 //
 //   See also: PLOTMODEL, PLOT_UNIT
+			
 
 	//parse options and get a structure of options. 
Index: /issm/trunk-jpl/src/m/plot/plot_unit.js
===================================================================
--- /issm/trunk-jpl/src/m/plot/plot_unit.js	(revision 19740)
+++ /issm/trunk-jpl/src/m/plot/plot_unit.js	(revision 19741)
@@ -20,4 +20,5 @@
 	//}}}
 
+	//load the shaders: 
 	loadShaders(gl);
 	
@@ -32,6 +33,7 @@
 	zmin = ArrayMin(z);
 	zmax = ArrayMax(z);
-	datamin = ArrayMin(data);
-	datamax = ArrayMax(data);
+	caxis= options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+	datamin = caxis[0];
+	datamax = caxis[1];
 
 	//Compute scaling: 
@@ -68,5 +70,5 @@
 			}
 			else{ //2D triangular elements
-					
+				
 				/*A=elements(pos,1); B=elements(pos,2); C=elements(pos,3);
 				  patch( 'Faces', [A B C], 'Vertices', [x y z],'CData', data(pos),'FaceColor','flat','EdgeColor',edgecolor);*/
Index: /issm/trunk-jpl/src/m/plot/plotmodel.js
===================================================================
--- /issm/trunk-jpl/src/m/plot/plotmodel.js	(revision 19740)
+++ /issm/trunk-jpl/src/m/plot/plotmodel.js	(revision 19741)
@@ -6,4 +6,5 @@
 	//First process options
 	var  options = new plotoptions(args.slice(1,args.length));
+
 	
 	//get number of subplots
Index: /issm/trunk-jpl/src/m/plot/processdata.js
===================================================================
--- /issm/trunk-jpl/src/m/plot/processdata.js	(revision 19740)
+++ /issm/trunk-jpl/src/m/plot/processdata.js	(revision 19741)
@@ -146,5 +146,5 @@
 			for(var i=0;i<md.mesh.numberofelements;i++){
 				if(!IsNaN(data[i])){
-					data[i]=Math.log(data[i])/log(options.getfieldvalue('log'));
+					data[i]=Math.log10(data[i])/Math.log10(options.getfieldvalue('log'));
 				}
 			}
@@ -180,6 +180,12 @@
 		//log?
 		if (options.exist('log')){
+			var bounds=options.getfieldvalue('caxis',[ArrayMin(data),ArrayMax(data)]);
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]<bounds[0])data[i]=bounds[0];
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]>bounds[1])data[i]=bounds[1];
+			for(var i=0;i<md.mesh.numberofvertices;i++)if(data[i]<=0){
+				throw Error("Log option cannot be applied on negative values. Use caxis option (Rignot''s settings: [1.5 max(data)])");
+			}
 		   for(var i=0;i<md.mesh.numberofvertices;i++){
-			   data[i]=Math.log(data[i])/log(options.getfieldvalue('log'));
+			   data[i]=Math.log10(data[i])/Math.log10(options.getfieldvalue('log'));
 		   }
 		}
Index: /issm/trunk-jpl/src/m/plot/webgl.js
===================================================================
--- /issm/trunk-jpl/src/m/plot/webgl.js	(revision 19740)
+++ /issm/trunk-jpl/src/m/plot/webgl.js	(revision 19741)
@@ -118,11 +118,5 @@
 
 	value = clamp(value, min + 1.0, max);
-	var use_log_scale = false;
-	if (use_log_scale == true) {
-		var normalizedValue = Math.log(value - min) / Math.log(max - min);
-	}
-	else {
-		var normalizedValue = (value - min) / (max - min);
-	}
+	var normalizedValue = (value - min) / (max - min);
 	var index = clamp(Math.round(normalizedValue * colorbar.length), 0, colorbar.length - 1);
 	return colorbar[index];
