diff --git a/CImg.h b/CImg.h
index af63bcb6bf01df8296a6ef1f325cd64e58f89f0e..6e66a01d4b66c0dd56cadde822fa82c6dfac0626 100644
--- a/CImg.h
+++ b/CImg.h
@@ -16349,49 +16349,49 @@ namespace cimg_library_suffixed {
         if (nb==2 && sep=='%') _cimg_mp_constant(val/100);
 
         if (ss1==se) switch (*ss) { // One-char reserved variable
-          case 'c' : _cimg_mp_return(reserved_label['c']!=~0U?reserved_label['c']:_cimg_mp_slot_c);
-          case 'd' : _cimg_mp_return(reserved_label['d']!=~0U?reserved_label['d']:20);
-          case 'e' : _cimg_mp_return(reserved_label['e']!=~0U?reserved_label['e']:27);
-          case 'h' : _cimg_mp_return(reserved_label['h']!=~0U?reserved_label['h']:19);
-          case 'l' : _cimg_mp_return(reserved_label['l']!=~0U?reserved_label['l']:26);
-          case 'r' : _cimg_mp_return(reserved_label['r']!=~0U?reserved_label['r']:22);
-          case 's' : _cimg_mp_return(reserved_label['s']!=~0U?reserved_label['s']:21);
-          case 't' : _cimg_mp_return(reserved_label['t']!=~0U?reserved_label['t']:17);
-          case 'w' : _cimg_mp_return(reserved_label['w']!=~0U?reserved_label['w']:18);
-          case 'x' : _cimg_mp_return(reserved_label['x']!=~0U?reserved_label['x']:_cimg_mp_slot_x);
-          case 'y' : _cimg_mp_return(reserved_label['y']!=~0U?reserved_label['y']:_cimg_mp_slot_y);
-          case 'z' : _cimg_mp_return(reserved_label['z']!=~0U?reserved_label['z']:_cimg_mp_slot_z);
+          case 'c' : _cimg_mp_return(reserved_label[(unsigned char) 'c']!=~0U?reserved_label[(unsigned char) 'c']:_cimg_mp_slot_c);
+          case 'd' : _cimg_mp_return(reserved_label[(unsigned char) 'd']!=~0U?reserved_label[(unsigned char) 'd']:20);
+          case 'e' : _cimg_mp_return(reserved_label[(unsigned char) 'e']!=~0U?reserved_label[(unsigned char) 'e']:27);
+          case 'h' : _cimg_mp_return(reserved_label[(unsigned char) 'h']!=~0U?reserved_label[(unsigned char) 'h']:19);
+          case 'l' : _cimg_mp_return(reserved_label[(unsigned char) 'l']!=~0U?reserved_label[(unsigned char) 'l']:26);
+          case 'r' : _cimg_mp_return(reserved_label[(unsigned char) 'r']!=~0U?reserved_label[(unsigned char) 'r']:22);
+          case 's' : _cimg_mp_return(reserved_label[(unsigned char) 's']!=~0U?reserved_label[(unsigned char) 's']:21);
+          case 't' : _cimg_mp_return(reserved_label[(unsigned char) 't']!=~0U?reserved_label[(unsigned char) 't']:17);
+          case 'w' : _cimg_mp_return(reserved_label[(unsigned char) 'w']!=~0U?reserved_label[(unsigned char) 'w']:18);
+          case 'x' : _cimg_mp_return(reserved_label[(unsigned char) 'x']!=~0U?reserved_label[(unsigned char) 'x']:_cimg_mp_slot_x);
+          case 'y' : _cimg_mp_return(reserved_label[(unsigned char) 'y']!=~0U?reserved_label[(unsigned char) 'y']:_cimg_mp_slot_y);
+          case 'z' : _cimg_mp_return(reserved_label[(unsigned char) 'z']!=~0U?reserved_label[(unsigned char) 'z']:_cimg_mp_slot_z);
           case 'u' :
-            if (reserved_label['u']!=~0U) _cimg_mp_return(reserved_label['u']);
+            if (reserved_label[(unsigned char) 'u']!=~0U) _cimg_mp_return(reserved_label[(unsigned char) 'u']);
             _cimg_mp_scalar2(mp_u,0,1);
           case 'g' :
-            if (reserved_label['g']!=~0U) _cimg_mp_return(reserved_label['g']);
+            if (reserved_label[(unsigned char) 'g']!=~0U) _cimg_mp_return(reserved_label[(unsigned char) 'g']);
             _cimg_mp_scalar0(mp_g);
           case 'i' :
-            if (reserved_label['i']!=~0U) _cimg_mp_return(reserved_label['i']);
+            if (reserved_label[(unsigned char) 'i']!=~0U) _cimg_mp_return(reserved_label[(unsigned char) 'i']);
             _cimg_mp_scalar0(mp_i);
           case 'I' :
             _cimg_mp_op("Variable 'I'");
-            if (reserved_label['I']!=~0U) _cimg_mp_return(reserved_label['I']);
+            if (reserved_label[(unsigned char) 'I']!=~0U) _cimg_mp_return(reserved_label[(unsigned char) 'I']);
             _cimg_mp_check_vector0(imgin._spectrum);
             need_input_copy = true;
             pos = vector(imgin._spectrum);
             CImg<ulongT>::vector((ulongT)mp_Joff,pos,0,0,imgin._spectrum).move_to(code);
             _cimg_mp_return(pos);
           case 'R' :
-            if (reserved_label['R']!=~0U) _cimg_mp_return(reserved_label['R']);
+            if (reserved_label[(unsigned char) 'R']!=~0U) _cimg_mp_return(reserved_label[(unsigned char) 'R']);
             need_input_copy = true;
             _cimg_mp_scalar6(mp_ixyzc,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,0,0,0);
           case 'G' :
-            if (reserved_label['G']!=~0U) _cimg_mp_return(reserved_label['G']);
+            if (reserved_label[(unsigned char) 'G']!=~0U) _cimg_mp_return(reserved_label[(unsigned char) 'G']);
             need_input_copy = true;
             _cimg_mp_scalar6(mp_ixyzc,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,1,0,0);
           case 'B' :
-            if (reserved_label['B']!=~0U) _cimg_mp_return(reserved_label['B']);
+            if (reserved_label[(unsigned char) 'B']!=~0U) _cimg_mp_return(reserved_label[(unsigned char) 'B']);
             need_input_copy = true;
             _cimg_mp_scalar6(mp_ixyzc,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,2,0,0);
           case 'A' :
-            if (reserved_label['A']!=~0U) _cimg_mp_return(reserved_label['A']);
+            if (reserved_label[(unsigned char) 'A']!=~0U) _cimg_mp_return(reserved_label[(unsigned char) 'A']);
             need_input_copy = true;
             _cimg_mp_scalar6(mp_ixyzc,_cimg_mp_slot_x,_cimg_mp_slot_y,_cimg_mp_slot_z,3,0,0);
           }
@@ -16483,7 +16483,7 @@ namespace cimg_library_suffixed {
 
             // Assign image value (direct).
             if (l_variable_name>2 && (*ss=='i' || *ss=='j' || *ss=='I' || *ss=='J') && (*ss1=='(' || *ss1=='[') &&
-                (reserved_label[*ss]==~0U || *ss1=='(' || !_cimg_mp_is_vector(reserved_label[*ss]))) {
+                (reserved_label[(unsigned char) *ss]==~0U || *ss1=='(' || !_cimg_mp_is_vector(reserved_label[(unsigned char) *ss]))) {
               is_relative = *ss=='j' || *ss=='J';
 
               if (*ss1=='[' && *ve1==']') { // i/j/I/J[_#ind,offset] = value
@@ -16655,7 +16655,7 @@ namespace cimg_library_suffixed {
                   cimglist_for(variable_def,i) if (!std::strcmp(variable_name,variable_def[i])) {
                     arg1 = variable_pos[i]; break;
                   }
-                } else arg1 = reserved_label[*variable_name]; // Single-char variable
+                } else arg1 = reserved_label[(unsigned char) *variable_name]; // Single-char variable
                 if (arg1==~0U) compile(ss,s0 - 1,depth1,0,is_single); // Variable does not exist -> error
                 else { // Variable already exists
                   if (_cimg_mp_is_scalar(arg1)) compile(ss,s,depth1,0,is_single); // Variable is not a vector -> error
@@ -17919,7 +17919,7 @@ namespace cimg_library_suffixed {
           s0 = s1 = std::strchr(ss,'['); if (s0) { do { --s1; } while (cimg::is_blank(*s1)); cimg::swap(*s0,*++s1); }
 
           if ((*ss=='I' || *ss=='J') && *ss1=='[' &&
-              (reserved_label[*ss]==~0U || !_cimg_mp_is_vector(reserved_label[*ss]))) { // Image value as a vector
+              (reserved_label[(unsigned char) *ss]==~0U || !_cimg_mp_is_vector(reserved_label[(unsigned char) *ss]))) { // Image value as a vector
             if (*ss2=='#') { // Index specified
               s0 = ss3; while (s0<se1 && (*s0!=',' || level[s0 - expr._data]!=clevel1)) ++s0;
               p1 = compile(ss3,s0++,depth1,0,is_single);
@@ -17962,7 +17962,7 @@ namespace cimg_library_suffixed {
           }
 
           if ((*ss=='i' || *ss=='j') && *ss1=='[' &&
-              (reserved_label[*ss]==~0U || !_cimg_mp_is_vector(reserved_label[*ss]))) { // Image value as a scalar
+              (reserved_label[(unsigned char) *ss]==~0U || !_cimg_mp_is_vector(reserved_label[(unsigned char) *ss]))) { // Image value as a scalar
             if (*ss2=='#') { // Index specified
               s0 = ss3; while (s0<se1 && (*s0!=',' || level[s0 - expr._data]!=clevel1)) ++s0;
               p1 = compile(ss3,s0++,depth1,0,is_single);
@@ -20588,8 +20588,8 @@ namespace cimg_library_suffixed {
         if (variable_name[1]) { // Multi-char variable
           cimglist_for(variable_def,i) if (!std::strcmp(variable_name,variable_def[i]))
             _cimg_mp_return(variable_pos[i]);
-        } else if (reserved_label[*variable_name]!=~0U) // Single-char variable
-          _cimg_mp_return(reserved_label[*variable_name]);
+        } else if (reserved_label[(unsigned char) *variable_name]!=~0U) // Single-char variable
+          _cimg_mp_return(reserved_label[(unsigned char) *variable_name]);
 
         // Reached an unknown item -> error.
         is_sth = true; // is_valid_variable_name
@@ -45566,7 +45566,7 @@ namespace cimg_library_suffixed {
           c = (unsigned char)text[i];
           switch (c) {
           case '\n' : y+=font[0]._height; if (x>w) w = x; x = 0; break;
-          case '\t' : x+=4*font[' ']._width; break;
+          case '\t' : x+=4*font[(unsigned char) ' ']._width; break;
           default : if (c<font._width) x+=font[c]._width;
           }
         }
@@ -45582,7 +45582,7 @@ namespace cimg_library_suffixed {
         const unsigned char c = (unsigned char)text[i];
         switch (c) {
         case '\n' : y+=font[0]._height; x = x0; break;
-        case '\t' : x+=4*font[' ']._width; break;
+        case '\t' : x+=4*font[(unsigned char) ' ']._width; break;
         default : if (c<font._width) {
             CImg<T> letter = font[c];
             if (letter) {
@@ -45607,7 +45607,7 @@ namespace cimg_library_suffixed {
     }
 
     // [internal] Version used to display text in interactive viewers.
-    CImg<T>& __draw_text(const char *const text, const bool is_down, ...) {
+    CImg<T>& __draw_text(const char *const text, const int is_down, ...) {
       CImg<charT> tmp(2048);
       std::va_list ap; va_start(ap,is_down);
       cimg_vsnprintf(tmp,tmp._width,text,ap); va_end(ap);
@@ -60574,11 +60574,11 @@ namespace cimg_library_suffixed {
             cimg_forXY(letter,x,y) if (letter(x,y)) { if (x<xmin) xmin = x; if (x>xmax) xmax = x; }
             if (xmin<=xmax) letter.crop(xmin,0,xmax,letter._height - 1);
           }
-          font[' '].resize(font['f']._width,-100,-100,-100,0);
-          if (' ' + 256<font.size()) font[' ' + 256].resize(font['f']._width,-100,-100,-100,0);
+          font[(unsigned char) ' '].resize(font[(unsigned char) 'f']._width,-100,-100,-100,0);
+          if (' ' + 256<font.size()) font[' ' + 256].resize(font[(unsigned char) 'f']._width,-100,-100,-100,0);
         }
         cimglist_for(font,l)
-          font[l].resize(std::max(font[';']._width,font[l]._width) + padding_x,
+          font[l].resize(std::max(font[(unsigned char) ';']._width,font[l]._width) + padding_x,
                          -100,1,1,0,0,0.55f);
         font.insert(256,0);
         cimglist_for_in(font,0,255,l) font[l].assign(font[l + 256]._width,font[l + 256]._height,1,3,1);