diff -Naur fltk-1.3.5/FL/Fl_Device.H fltk-1.3.x/FL/Fl_Device.H
--- fltk-1.3.5/FL/Fl_Device.H	2019-03-03 09:40:23.000000000 +0100
+++ fltk-1.3.x/FL/Fl_Device.H	2019-12-07 14:59:28.000374000 +0100
@@ -118,7 +118,8 @@
   Fl_Fontsize size_; // current font size
   Fl_Color color_; // current color
   int sptr;
-  static const int matrix_stack_size = FL_MATRIX_STACK_SIZE;
+  //static const int matrix_stack_size = FL_MATRIX_STACK_SIZE;
+  enum{matrix_stack_size = FL_MATRIX_STACK_SIZE};
   matrix stack[FL_MATRIX_STACK_SIZE];
   matrix m;
   int n, p_size, gap_;
@@ -126,7 +127,8 @@
   int what;
   int fl_clip_state_number;
   int rstackptr;
-  static const int region_stack_max = FL_REGION_STACK_SIZE - 1;
+  //static const int region_stack_max = FL_REGION_STACK_SIZE - 1;
+  enum{region_stack_max = FL_REGION_STACK_SIZE-1};
   Fl_Region rstack[FL_REGION_STACK_SIZE];
 #ifdef WIN32
   int numcount;
diff -Naur fltk-1.3.5/FL/Fl_Image.H fltk-1.3.x/FL/Fl_Image.H
--- fltk-1.3.5/FL/Fl_Image.H	2019-03-03 09:40:23.000000000 +0100
+++ fltk-1.3.x/FL/Fl_Image.H	2019-12-07 17:56:21.712142000 +0100
@@ -53,11 +53,18 @@
  a box with an X in it being drawn instead.
 */
 class FL_EXPORT Fl_Image {
-    
+
 public:
+
+/*
   static const int ERR_NO_IMAGE    = -1;
   static const int ERR_FILE_ACCESS = -2;
   static const int ERR_FORMAT      = -3;
+*/
+
+  enum{ERR_NO_IMAGE = -1};
+  enum{ERR_FILE_ACCESS = -2};
+  enum{ERR_FORMAT = -3};
     
 private:
   int w_, h_, d_, ld_, count_;
diff -Naur fltk-1.3.5/src/fl_font_win32.cxx fltk-1.3.x/src/fl_font_win32.cxx
--- fltk-1.3.5/src/fl_font_win32.cxx	2019-03-03 09:40:23.000000000 +0100
+++ fltk-1.3.x/src/fl_font_win32.cxx	2019-12-07 15:09:17.978722000 +0100
@@ -285,7 +285,7 @@
   GLYPHMETRICS metrics;
   int maxw = 0, maxh = 0, dh;
   int minx = 0, miny = -999999;
-  unsigned len = 0, idx = 0;
+  unsigned len = 0, idx = 0,ll;
   HWND hWnd = 0;
   HDC gc = fl_gc; // local copy of current gc - make a copy in case we change it...
   int has_surrogates; // will be set if the string contains surrogate pairs
@@ -324,7 +324,7 @@
   // only works for the BMP, so we leverage GetCharacterPlacementW instead, which
   // is not ideal, but works adequately well, and does handle surrogate pairs.
   has_surrogates = 0;
-  for(unsigned ll = 0; ll < len; ll++) {
+  for(ll = 0; ll < len; ll++) {
     if((ext_buff[ll] >= 0xD800) && (ext_buff[ll] < 0xE000)) {
       has_surrogates = -1;
       break;
diff -Naur fltk-1.3.5/src/fl_gleam.cxx fltk-1.3.x/src/fl_gleam.cxx
--- fltk-1.3.5/src/fl_gleam.cxx	2019-03-03 09:40:23.000000000 +0100
+++ fltk-1.3.x/src/fl_gleam.cxx	2019-12-07 15:05:03.265096039 +0100
@@ -64,7 +64,8 @@
   whether this was intended or by accident.
 */
 
-static void shade_rect_top_bottom(int x, int y, int w, int h, Fl_Color fg1, Fl_Color fg2, float th) {
+static void shade_rect_top_bottom(int x, int y, int w, int h, Fl_Color fg1, Fl_Color fg2, float th) {
+  int i;
   // calculate background size w/o borders
   x += 2; y += 2; w -= 4; h -= 4;
   // draw the shiny background using maximum limits
@@ -75,7 +76,7 @@
   float step_size_bottom = h_bottom > 1 ? (0.999f/float(h_bottom)) : 1;
   // draw the gradient at the top of the widget
   float k = 1;
-  for (int i = 0; i < h_top; i++, k -= step_size_top) {
+  for (i = 0; i < h_top; i++, k -= step_size_top) {
     gleam_color(fl_color_average(fl_color_average(fg1, fg2, th), fg1, k));
     fl_xyline(x, y+i, x+w-1);
   }
@@ -86,7 +87,7 @@
 
   // draw the gradient at the bottom of the widget
   k = 1;
-  for (int i = 0; i < h_bottom; i++, k -= step_size_bottom) {
+  for (i = 0; i < h_bottom; i++, k -= step_size_bottom) {
     gleam_color(fl_color_average(fg1, fl_color_average(fg1, fg2, th), k));
     fl_xyline(x, y+h_top+h_flat+i, x+w-1);
   }
diff -Naur fltk-1.3.5/src/Fl_Native_File_Chooser_WIN32.cxx fltk-1.3.x/src/Fl_Native_File_Chooser_WIN32.cxx
--- fltk-1.3.5/src/Fl_Native_File_Chooser_WIN32.cxx	2019-03-03 09:40:23.000000000 +0100
+++ fltk-1.3.x/src/Fl_Native_File_Chooser_WIN32.cxx	2019-12-24 08:42:37.739708000 +0100
@@ -315,11 +315,14 @@
 
 // SHOW FILE BROWSER
 int Fl_Native_File_Chooser::showfile() {
+  WCHAR * tmp_ptr;
+
   ClearOFN();
   clear_pathnames();
   size_t fsize = FNFC_MAX_PATH;
-  _ofn_ptr->Flags |= OFN_NOVALIDATE;	// prevent disabling of front slashes
+  //_ofn_ptr->Flags |= OFN_NOVALIDATE;	// prevent disabling of front slashes
   _ofn_ptr->Flags |= OFN_HIDEREADONLY;	// hide goofy readonly flag
+  _ofn.Flags |= OFN_PATHMUSTEXIST | OFN_LONGNAMES;
   // USE NEW BROWSER
   _ofn_ptr->Flags |= OFN_EXPLORER;	// use newer explorer windows
   _ofn_ptr->Flags |= OFN_ENABLESIZING;	// allow window to be resized (hey, why not?)
@@ -343,6 +346,12 @@
   }
   // SPACE FOR RETURNED FILENAME
   _ofn_ptr->lpstrFile    = new WCHAR[fsize];
+
+  tmp_ptr = new WCHAR[8];
+  tmp_ptr[0] = 0;
+  tmp_ptr[1] = 0;
+  _ofn_ptr->lpstrDefExt = tmp_ptr;
+
   _ofn_ptr->nMaxFile     = (DWORD) fsize-1;
   _ofn_ptr->lpstrFile[0] = 0;
   _ofn_ptr->lpstrFile[1] = 0;		// dnull
