diff --git a/Mesh/Field.cpp b/Mesh/Field.cpp
index 9b01cae78c197f0e3b0c36c835f87861190f0211..644aed603b251e3024993edfa32a99ff3f29f1fb 100644
--- a/Mesh/Field.cpp
+++ b/Mesh/Field.cpp
@@ -1296,19 +1296,20 @@ class PostViewField : public Field
     if(!octree->searchTensorWithTol(x, y, z, l, 0, 0, 0.05))
       Msg::Info("No tensor element found containing point (%g,%g,%g)", x, y, z);
     if(crop_negative_values){
-      for(int i = 0; i < 9; i++){
-        if(l[i] <= 0) l[i] = MAX_LC;
+      if(l[0] <= 0 && l[1] <= 0 && l[2] <= 0 &&
+         l[3] <= 0 && l[4] <= 0 && l[5] <= 0 &&
+         l[6] <= 0 && l[7] <= 0 && l[8] <= 0){
+        for(int i = 0; i < 9; i++) l[i] = MAX_LC;
+      }
+      else{
+        for(int i = 0; i < 9; i++){
+          if(l[i] <= 0) l[i] = 0;
+        }
       }
     }
-    metr(0, 0) = l[0];
-    metr(0, 1) = l[1];
-    metr(0, 2) = l[2];
-    metr(1, 0) = l[3];
-    metr(1, 1) = l[4];
-    metr(1, 2) = l[5];
-    metr(2, 0) = l[6];
-    metr(2, 1) = l[7];
-    metr(2, 2) = l[8];
+    metr(0, 0) = l[0]; metr(0, 1) = l[1]; metr(0, 2) = l[2];
+    metr(1, 0) = l[3]; metr(1, 1) = l[4]; metr(1, 2) = l[5];
+    metr(2, 0) = l[6]; metr(2, 1) = l[7]; metr(2, 2) = l[8];
   }
   const char *getName()
   {