diff --git a/Post/ColorTable.cpp b/Post/ColorTable.cpp
index be7ae05e5be128a84b60d4954df126ee58e0d2ea..21f8772cbc3c2493b72fcaf191135b80049f70c3 100644
--- a/Post/ColorTable.cpp
+++ b/Post/ColorTable.cpp
@@ -95,15 +95,15 @@ void ColorTable_Recompute(GmshColorTable * ct)
         double ii = (double)(s - bias) * 128.;
         if(ii < 0) ii = 0;
         if(ii > 128) ii = 128;
-        double rr = 
-          ii <= 46 ? 0. : 
+        double rr =
+          ii <= 46 ? 0. :
           ii >= 111 ? -0.03125 * (ii - 111) + 1. :
-          ii >= 78 ? 1. : 
+          ii >= 78 ? 1. :
           0.03125 * (ii - 46);
-        double gg = 
-          ii <= 14 || ii >= 111 ? 0. : 
-          ii >= 79 ? -0.03125 * (ii - 111) : 
-          ii <= 46 ? 0.03125 * (ii - 14) : 
+        double gg =
+          ii <= 14 || ii >= 111 ? 0. :
+          ii >= 79 ? -0.03125 * (ii - 111) :
+          ii <= 46 ? 0.03125 * (ii - 14) :
           1.;
         double bb =
           ii >= 79 ? 0. :
@@ -246,8 +246,30 @@ void ColorTable_Recompute(GmshColorTable * ct)
         r = g = b = (int)(255 * (1. - curvature));
       }
       break;
-    case 10: // all white
-      r = g = b = 255;
+    case 10: // "french flag"
+      {
+        double ii = (double)(s - bias);
+        if(ii < 0) ii = 0;
+        if(ii > 1) ii = 1;
+        double rr =
+          ii >= .75 ? 2*(0.75-ii) + 1.:
+          ii >= .5  ? 1. :
+          ii >= .25 ? 4. * (ii-0.25) :
+          0.;
+        double gg =
+          ii <= .25 ? 1.33333 * ii :
+          ii <= .5  ? 0.33333 + 2.66667 * (ii-0.25) :
+          ii <= .75 ? 1 - 2.66667 * (ii-0.5) :
+          1.33333 * (1.-ii);
+        double bb =
+          ii <= 0.25 ? 2*ii + 0.5 :
+          ii <= 0.5  ? 1. :
+          ii <= 0.75 ? 4*(0.75-ii) :
+          0.;
+        r = (int)(rr * 255.);
+        g = (int)(gg * 255.);
+        b = (int)(bb * 255.);
+      }
       break;
     case 11: // matlab "hsv"
       {
@@ -321,7 +343,7 @@ void ColorTable_Recompute(GmshColorTable * ct)
       g = (int)(255. * pow((double)g / 255., gamma));
       b = (int)(255. * pow((double)b / 255., gamma));
     }
-    
+
     if(ct->ipar[COLORTABLE_INVERT]) {
       r = 255 - r;
       g = 255 - g;
@@ -333,7 +355,7 @@ void ColorTable_Recompute(GmshColorTable * ct)
     g = g < 0 ? 0 : (g > 255 ? 255 : g);
     b = b < 0 ? 0 : (b > 255 ? 255 : b);
     a = a < 0 ? 0 : (a > 255 ? 255 : a);
-    
+
     ct->table[i] = CTX::instance()->packColor(r, g, b, a);
   }
 
@@ -407,14 +429,14 @@ int ColorTable_IsAlpha(GmshColorTable * ct)
 
 // HSV/RBG conversion routines
 
-void HSV_to_RGB(double H, double S, double V, 
-                double *R, double *G, double *B) 
+void HSV_to_RGB(double H, double S, double V,
+                double *R, double *G, double *B)
 {
   if(S < 5.0e-6) {
     *R = *G = *B = V;
   }
   else {
-    int i = (int)H;  
+    int i = (int)H;
     double f = H - (float)i;
     double p1 = V * (1.0 - S);
     double p2 = V * (1.0 - S * f);
@@ -430,8 +452,8 @@ void HSV_to_RGB(double H, double S, double V,
   }
 }
 
-void RGB_to_HSV(double R, double G, double B, 
-                double *H, double *S, double *V) 
+void RGB_to_HSV(double R, double G, double B,
+                double *H, double *S, double *V)
 {
   double maxv = R > G ? R : G; if(B > maxv) maxv = B;
   *V = maxv;