void StopAutoScrolling();
 #endif // wxUSE_CLIPBOARD
 
-protected:
     wxString DoSelectionToText(wxHtmlSelection *sel);
 
+private:
+    // implementation of SetPage()
+    bool DoSetPage(const wxString& source);
+
+protected:
     // This is pointer to the first cell in parsed data.  (Note: the first cell
     // is usually top one = all other cells are sub-cells of this one)
     wxHtmlContainerCell *m_Cell;
 
 
 void wxHtmlWindow::SetFonts(const wxString& normal_face, const wxString& fixed_face, const int *sizes)
 {
-    wxString op = m_OpenedPage;
-
     m_Parser->SetFonts(normal_face, fixed_face, sizes);
-    // fonts changed => contents invalid, so reload the page:
-    SetPage(wxT("<html><body></body></html>"));
-    if (!op.empty())
-        LoadPage(op);
+
+    // re-layout the page after changing fonts:
+    DoSetPage(*(m_Parser->GetSource()));
 }
 
 void wxHtmlWindow::SetStandardFonts(int size,
                                     const wxString& normal_face,
                                     const wxString& fixed_face)
 {
-    wxString op = m_OpenedPage;
-
     m_Parser->SetStandardFonts(size, normal_face, fixed_face);
-    // fonts changed => contents invalid, so reload the page:
-    SetPage(wxT("<html><body></body></html>"));
-    if (!op.empty())
-        LoadPage(op);
-}
 
+    // re-layout the page after changing fonts:
+    DoSetPage(*(m_Parser->GetSource()));
+}
 
 bool wxHtmlWindow::SetPage(const wxString& source)
+{
+    m_OpenedPage = m_OpenedAnchor = m_OpenedPageTitle = wxEmptyString;
+    return DoSetPage(source);
+}
+
+bool wxHtmlWindow::DoSetPage(const wxString& source)
 {
     wxString newsrc(source);
 
     dc->SetMapMode(wxMM_TEXT);
     SetBackgroundColour(wxColour(0xFF, 0xFF, 0xFF));
     SetBackgroundImage(wxNullBitmap);
-    m_OpenedPage = m_OpenedAnchor = m_OpenedPageTitle = wxEmptyString;
+
     m_Parser->SetDC(dc);
     if (m_Cell)
     {
 
 bool wxHtmlWindow::AppendToPage(const wxString& source)
 {
-    return SetPage(*(GetParser()->GetSource()) + source);
+    return DoSetPage(*(GetParser()->GetSource()) + source);
 }
 
 bool wxHtmlWindow::LoadPage(const wxString& location)