diff --git a/CHANGES b/CHANGES
index cac5f3af4895f73c1714a12022c580d04627fba7..c5a6b9d56a6d09f223e35db700556361f3f3242b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,16 @@
+CHANGES IN FLTK 1.1.0b7
+
+	- More documentation updates...
+	- Fl_Help_View could get in an infinitely loop when
+	  determining the maximum width of the page; this
+	  was due to a bug in the get_length() method with
+	  percentages (100% width would cause the bug.)
+	- Don't need -lgdi32 for CygWin, since -mwindows
+	  does this for us.
+	- The WIN32 event handler did not properly handle
+	  WM_SYNCPAINT messages.
+
+
 CHANGES IN FLTK 1.1.0b6
 
 	- Documentation updates...
diff --git a/src/Fl_Help_View.cxx b/src/Fl_Help_View.cxx
index 1183131b9ae2655b372ea2bf8422ee16492b1d8f..19b1ba53aed6759caa65989372eda378f076dd5b 100644
--- a/src/Fl_Help_View.cxx
+++ b/src/Fl_Help_View.cxx
@@ -1,5 +1,5 @@
 //
-// "$Id: Fl_Help_View.cxx,v 1.1.2.16 2001/11/26 20:13:29 easysw Exp $"
+// "$Id: Fl_Help_View.cxx,v 1.1.2.17 2001/11/30 16:10:08 easysw Exp $"
 //
 // Fl_Help_View widget routines.
 //
@@ -746,6 +746,7 @@ Fl_Help_View::format()
 		columns[MAX_COLUMNS];
 				// Column widths
 
+
   // Reset document width...
   hsize_ = w() - 24;
 
@@ -2006,7 +2007,12 @@ Fl_Help_View::get_length(const char *l) {	// I - Value
   if (!l[0]) return 0;
 
   val = atoi(l);
-  if (l[strlen(l) - 1] == '%') val = val * hsize_ / 100;
+  if (l[strlen(l) - 1] == '%') {
+    if (val > 100) val = 100;
+    else if (val < 0) val = 0;
+
+    val = val * (hsize_ - 24) / 100;
+  }
 
   return val;
 }
@@ -2543,5 +2549,5 @@ hscrollbar_callback(Fl_Widget *s, void *)
 
 
 //
-// End of "$Id: Fl_Help_View.cxx,v 1.1.2.16 2001/11/26 20:13:29 easysw Exp $".
+// End of "$Id: Fl_Help_View.cxx,v 1.1.2.17 2001/11/30 16:10:08 easysw Exp $".
 //
diff --git a/src/Fl_win32.cxx b/src/Fl_win32.cxx
index 9c08b3e7fd0df9274e4c1ade3a26bf1646e5080c..de80c9d0a97cee652d6173a75ee7a2818600c655 100644
--- a/src/Fl_win32.cxx
+++ b/src/Fl_win32.cxx
@@ -1,5 +1,5 @@
 //
-// "$Id: Fl_win32.cxx,v 1.33.2.37.2.8 2001/11/22 15:35:01 easysw Exp $"
+// "$Id: Fl_win32.cxx,v 1.33.2.37.2.9 2001/11/30 16:10:08 easysw Exp $"
 //
 // WIN32-specific code for the Fast Light Tool Kit (FLTK).
 //
@@ -435,21 +435,6 @@ extern void fl_restore_pen(void);
 
 static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 {
-  // Matt: When dragging a full window, MSWindows on 'slow'
-  // machines can lose track of the window refresh area. It sends some kind
-  // of panic message to the desktop that in turn sends this message on to
-  // all applications.
-  static int cnt=0;
-  if (uMsg == WM_SYNCPAINT) {
-    MSG msg;
-    if ( PeekMessage( &msg, hWnd, WM_PAINT, WM_PAINT, false )==0 )
-      InvalidateRect(hWnd,0,FALSE);
-    if (cnt) {
-      InvalidateRect(fl_window,0,FALSE);
-      cnt = 0;
-    } else cnt = 1;
-  } else if (uMsg == WM_PAINT) cnt = 0;
-
   fl_msg.message = uMsg;
 
   Fl_Window *window = fl_find(hWnd);
@@ -463,6 +448,14 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
     Fl::handle(FL_CLOSE, window);
     return 0;
 
+  case WM_SYNCPAINT :
+  case WM_NCPAINT :
+  case WM_ERASEBKGND :
+    // Andreas Weitl - WM_SYNCPAINT needs to be passed to DefWindowProc
+    // so that Windows can generate the proper paint messages...
+    // Similarly, WM_NCPAINT and WM_ERASEBKGND need this, too...
+    break;
+
   case WM_PAINT: {
 
     Fl_X *i = Fl_X::i(window);
@@ -655,7 +648,6 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
     fl_GetDC(hWnd);
     fl_select_palette();
     break;
-
 #endif
 
   default:
@@ -1005,5 +997,5 @@ void Fl_Window::make_current() {
 }
 
 //
-// End of "$Id: Fl_win32.cxx,v 1.33.2.37.2.8 2001/11/22 15:35:01 easysw Exp $".
+// End of "$Id: Fl_win32.cxx,v 1.33.2.37.2.9 2001/11/30 16:10:08 easysw Exp $".
 //