diff --git a/contrib/mpeg_encode/libpnmrw.cpp b/contrib/mpeg_encode/libpnmrw.cpp
index d279607d0c49bf028a5b942b17071674fc5b29e2..d7e5003f314f5ff7e58a84e37fc9a23a35a778e6 100644
--- a/contrib/mpeg_encode/libpnmrw.cpp
+++ b/contrib/mpeg_encode/libpnmrw.cpp
@@ -523,7 +523,7 @@ pgm_readpgmrow( FILE* file, gray* grayrow, int cols, gray maxval, int format )
 static void
   pgm_writepgminit( FILE* file, int cols, int rows, gray maxval, int forceplain )
 {
-  if ( maxval <= 255 && ! forceplain )
+  if ( /*maxval <= 255 && */ ! forceplain ) // gmsh
     fprintf(
 	    file, "%c%c\n%d %d\n%d\n", PGM_MAGIC1, RPGM_MAGIC2,
 	    cols, rows, maxval );
@@ -589,7 +589,7 @@ pgm_writepgmrowplain(FILE* file,
 static int
   pgm_writepgmrow( FILE* file, gray* grayrow, int cols, gray maxval, int forceplain )
 {
-  if ( maxval <= 255 && ! forceplain )
+  if ( /*maxval <= 255 &&*/ ! forceplain ) // gmsh
     return pgm_writepgmrowraw( file, grayrow, cols, maxval );
   else
     return pgm_writepgmrowplain( file, grayrow, cols, maxval );
@@ -678,7 +678,7 @@ static int
 static void
   ppm_writeppminit( FILE* file, int cols, int rows, pixval maxval, int forceplain )
 {
-  if ( maxval <= 255 && ! forceplain )
+  if ( /*maxval <= 255 &&*/ ! forceplain ) // gmsh
     fprintf(
 	    file, "%c%c\n%d %d\n%d\n", PPM_MAGIC1, RPPM_MAGIC2,
 	    cols, rows, maxval );
@@ -759,7 +759,7 @@ ppm_writeppmrowplain(FILE* file,
 static int
   ppm_writeppmrow( FILE* file, pixel* pixelrow, int cols, pixval maxval, int forceplain )
 {
-  if ( maxval <= 255 && ! forceplain )
+  if ( /*maxval <= 255 &&*/ ! forceplain ) // gmsh
     return ppm_writeppmrowraw( file, pixelrow, cols, maxval );
   else
     return ppm_writeppmrowplain( file, pixelrow, cols, maxval );
diff --git a/contrib/mpeg_encode/rgbtoycc.cpp b/contrib/mpeg_encode/rgbtoycc.cpp
index 62e61f707e1893890771f6323fb142551af2f379..c6a9829085bf8664735110a6191bea6d76efac78 100644
--- a/contrib/mpeg_encode/rgbtoycc.cpp
+++ b/contrib/mpeg_encode/rgbtoycc.cpp
@@ -139,23 +139,23 @@ PNMtoYUV(MpegFrame *frame)
 	     x += 2, dy0 += 2, dy1 += 2, dcr++,
 	     dcb++, src0 += 2, src1 += 2) {
 
-	    *dy0 = (mult299[PPM_GETR(*src0)] +
+          *dy0 = (uint8)((mult299[PPM_GETR(*src0)] +
 		    mult587[PPM_GETG(*src0)] +
-		    mult114[PPM_GETB(*src0)]) / ydivisor;
+		    mult114[PPM_GETB(*src0)]) / ydivisor);
 
-	    *dy1 = (mult299[PPM_GETR(*src1)] +
+	    *dy1 = (uint8)((mult299[PPM_GETR(*src1)] +
 		    mult587[PPM_GETG(*src1)] +
-		    mult114[PPM_GETB(*src1)]) / ydivisor;
+		    mult114[PPM_GETB(*src1)]) / ydivisor);
 
-	    dy0[1] = (mult299[PPM_GETR(src0[1])] +
+	    dy0[1] = (uint8)((mult299[PPM_GETR(src0[1])] +
 		      mult587[PPM_GETG(src0[1])] +
-		      mult114[PPM_GETB(src0[1])]) / ydivisor;
+		      mult114[PPM_GETB(src0[1])]) / ydivisor);
 
-	    dy1[1] = (mult299[PPM_GETR(src1[1])] +
+	    dy1[1] = (uint8)((mult299[PPM_GETR(src1[1])] +
 		      mult587[PPM_GETG(src1[1])] +
-		      mult114[PPM_GETB(src1[1])]) / ydivisor;
+		      mult114[PPM_GETB(src1[1])]) / ydivisor);
 
-	    *dcb = ((mult16874[PPM_GETR(*src0)] +
+	    *dcb = (uint8)(((mult16874[PPM_GETR(*src0)] +
 		     mult33126[PPM_GETG(*src0)] +
 		     mult5[PPM_GETB(*src0)] +
 		     mult16874[PPM_GETR(*src1)] +
@@ -166,9 +166,9 @@ PNMtoYUV(MpegFrame *frame)
 		     mult5[PPM_GETB(src0[1])] +
 		     mult16874[PPM_GETR(src1[1])] +
 		     mult33126[PPM_GETG(src1[1])] +
-		     mult5[PPM_GETB(src1[1])]) / cdivisor) + 128;
+		     mult5[PPM_GETB(src1[1])]) / cdivisor) + 128);
 
-	    *dcr = ((mult5[PPM_GETR(*src0)] +
+	    *dcr = (uint8)(((mult5[PPM_GETR(*src0)] +
 		     mult41869[PPM_GETG(*src0)] +
 		     mult08131[PPM_GETB(*src0)] +
 		     mult5[PPM_GETR(*src1)] +
@@ -179,7 +179,7 @@ PNMtoYUV(MpegFrame *frame)
 		     mult08131[PPM_GETB(src0[1])] +
 		     mult5[PPM_GETR(src1[1])] +
 		     mult41869[PPM_GETG(src1[1])] +
-		     mult08131[PPM_GETB(src1[1])]) / cdivisor) + 128;
+		     mult08131[PPM_GETB(src1[1])]) / cdivisor) + 128);
 
 	    /* if your floating point is faster than your loads, you
 	     * might consider this:
@@ -299,23 +299,23 @@ PPMtoYUV(MpegFrame *frame)
 
 	for ( x = 0; x < Fsize_x; x += 2, dy0 += 2, dy1 += 2, dcr++,
 				   dcb++, src0 += 6, src1 += 6) {
-	    *dy0 = (mult299[*src0] +
+	    *dy0 = (uint8)(mult299[*src0] +
 		    mult587[src0[1]] +
 		    mult114[src0[2]]);
 
-	    *dy1 = (mult299[*src1] +
+	    *dy1 = (uint8)(mult299[*src1] +
 		    mult587[src1[1]] +
 		    mult114[src1[2]]);
 
-	    dy0[1] = (mult299[src0[3]] +
+	    dy0[1] = (uint8)(mult299[src0[3]] +
 		      mult587[src0[4]] +
 		      mult114[src0[5]]);
 
-	    dy1[1] = (mult299[src1[3]] +
+	    dy1[1] = (uint8)(mult299[src1[3]] +
 		      mult587[src1[4]] +
 		      mult114[src1[5]]);
 
-	    *dcb = ((mult16874[*src0] +
+	    *dcb = (uint8)((mult16874[*src0] +
 		     mult33126[src0[1]] +
 		     mult5[src0[2]] +
 		     mult16874[*src1] +
@@ -328,7 +328,7 @@ PPMtoYUV(MpegFrame *frame)
 		     mult33126[src1[4]] +
 		     mult5[src1[5]]) / cdivisor) + 128;
 
-	    *dcr = ((mult5[*src0] +
+	    *dcr = (uint8)((mult5[*src0] +
 		     mult41869[src0[1]] +
 		     mult08131[src0[2]] +
 		     mult5[*src1] +