Index: src/sas/sasgui/guiframe/aboutbox.py
===================================================================
--- src/sas/sasgui/guiframe/aboutbox.py	(revision 959eb0181ad06828a748f04512f953aad5b31659)
+++ src/sas/sasgui/guiframe/aboutbox.py	(revision 959eb0181ad06828a748f04512f953aad5b31659)
@@ -185,5 +185,5 @@
         self.bitmap_button_danse.SetBitmapLabel(logo)
         """
-        image = file_dir + "/images/utlogo.gif"
+        image = file_dir + "/images/utlogo.png"
         if os.path.isfile(config._inst_logo):
             image = config._inst_logo
Index: src/sas/sasgui/guiframe/config.py
===================================================================
--- src/sas/sasgui/guiframe/config.py	(revision c6bdb3b56ff2c1bf95baa3241ca1df10d74a79d7)
+++ src/sas/sasgui/guiframe/config.py	(revision d9089328dec4c154a6bac2735e52b5e6fb3c8af2)
@@ -48,5 +48,5 @@
 '''This work benefited from the use of the SasView application, originally developed under NSF Award DMR-0520547. SasView also contains code developed with funding from the EU Horizon 2020 programme under the SINE2020 project Grant No 654000.'''
 _acknowledgement_citation = \
-'''M. Doucet et al. SasView Version 4.1, Zenodo, 10.5281/zenodo.438138'''
+'''M. Doucet et al. SasView Version 4.1.2, Zenodo, 10.5281/zenodo.825675'''
 
 _acknowledgement =  \
@@ -78,5 +78,5 @@
 _nsf_logo = os.path.join(icon_path, "nsf_logo.png")
 _danse_logo = os.path.join(icon_path, "danse_logo.png")
-_inst_logo = os.path.join(icon_path, "utlogo.gif")
+_inst_logo = os.path.join(icon_path, "utlogo.png")
 _nist_url = "http://www.nist.gov/"
 _umd_url = "http://www.umd.edu/"
Index: src/sas/sasgui/guiframe/documentation_window.py
===================================================================
--- src/sas/sasgui/guiframe/documentation_window.py	(revision d66dbcc8e869f27ec52bbe59173bde142f2c4a60)
+++ src/sas/sasgui/guiframe/documentation_window.py	(revision 2746eab3d2fd36206508d585c8b2ed061fabce96)
@@ -24,12 +24,38 @@
     import wx.html2 as html
     WX_SUPPORTS_HTML2 = True
-except:
+except ImportError:
     WX_SUPPORTS_HTML2 = False
 
 from sas.sasgui import get_app_dir
 
+# Don't use wx html renderer on windows.
+if os.name == 'nt':
+    WX_SUPPORTS_HTML2 = False
+
 logger = logging.getLogger(__name__)
 
 SPHINX_DOC_ENV = "SASVIEW_DOC_PATH"
+
+THREAD_STARTED = False
+def start_documentation_server(doc_root, port):
+    import thread
+    global THREAD_STARTED
+    if not THREAD_STARTED:
+        thread.start_new_thread(_documentation_server, (doc_root, port))
+        THREAD_STARTED = True
+
+def _documentation_server(doc_root, port):
+    from SimpleHTTPServer import SimpleHTTPRequestHandler
+    from SocketServer import TCPServer
+
+    os.chdir(doc_root)
+    httpd = TCPServer(("127.0.0.1", port), SimpleHTTPRequestHandler, bind_and_activate=False)
+    httpd.allow_reuse_address = True
+    try:
+        httpd.server_bind()
+        httpd.server_activate()
+        httpd.serve_forever()
+    finally:
+        httpd.server_close()
 
 class DocumentationWindow(wx.Frame):
@@ -69,13 +95,22 @@
         #Note added June 21, 2015     PDB
         file_path = os.path.join(docs_path, path)
-        url = "file:///" + urllib.quote(file_path, r'/\:')+ url_instruction
+        if path.startswith('http'):
+            url = path
+        elif not os.path.exists(file_path):
+            url = "index.html"
+            logger.error("Could not find Sphinx documentation at %s -- has it been built?",
+                         file_path)
+        elif False:
+            start_documentation_server(docs_path, port=7999)
+            url = "http://127.0.0.1:7999/" + path.replace('\\', '/') + url_instruction
+        else:
+            url = "file:///" + urllib.quote(file_path, r'/\:')+ url_instruction
 
-        if not os.path.exists(file_path):
-            logger.error("Could not find Sphinx documentation at %s \
-            -- has it been built?", file_path)
-        elif WX_SUPPORTS_HTML2:
+        #logger.info("showing url " + url)
+        if WX_SUPPORTS_HTML2:
             # Complete HTML/CSS support!
             self.view = html.WebView.New(self)
             self.view.LoadURL(url)
+            self.Bind(html.EVT_WEBVIEW_ERROR, self.OnError, self.view)
             self.Show()
         else:
@@ -87,10 +122,14 @@
             webbrowser.open_new_tab(url)
 
+    def OnError(self, evt):
+        logger.error("%d: %s", evt.GetInt(), evt.GetString())
+
 def main():
     """
     main loop function if running alone for testing.
     """
+    url = "index.html" if len(sys.argv) <= 1 else sys.argv[1]
     app = wx.App()
-    DocumentationWindow(None, -1, "index.html", "", "Documentation",)
+    DocumentationWindow(None, -1, url, "", "Documentation",)
     app.MainLoop()
 
Index: src/sas/sasgui/guiframe/media/graph_help.rst
===================================================================
--- src/sas/sasgui/guiframe/media/graph_help.rst	(revision f9b0c81e56a680c4cdbca2d3251ba73fc4b903cd)
+++ src/sas/sasgui/guiframe/media/graph_help.rst	(revision 5ed76f8390eac56ff5d3779fd9c454d0c8fe1dc0)
@@ -9,6 +9,6 @@
 
 SasView generates three different types of graph window: one that displays *1D data*
-(ie, I(Q) vs Q), one that displays *1D residuals* (ie, the difference between the
-experimental data and the theory at the same Q values), and *2D color maps*.
+(i.e., $I(Q)$ vs $Q$), one that displays *1D residuals* (ie, the difference between the
+experimental data and the theory at the same $Q$ values), and *2D color maps*.
 
 Graph window options
@@ -42,5 +42,5 @@
 plot window.
 
-.. note:: 
+.. note::
     *If a residuals graph (when fitting data) is hidden, it will not show up
     after computation.*
@@ -138,5 +138,5 @@
 style and size. *Remove Text* will remove the last annotation added. To change
 the legend. *Window Title* allows a custom title to be entered instead of Graph
-x. 
+x.
 
 Changing scales
@@ -226,5 +226,5 @@
 ^^^^^^^^^^^^^^^^^^^
 
-Linear fit performs a simple ( y(x)=ax+b ) linear fit within the plot window.
+Linear fit performs a simple $y(x)=ax+b$ linear fit within the plot window.
 
 In the *Dataset Menu* (see Invoking_the_dataset_menu_), select *Linear Fit*. A
@@ -234,5 +234,5 @@
 
 This option is most useful for performing simple Guinier, XS Guinier, and
-Porod type analyses, for example, to estimate Rg, a rod diameter, or incoherent
+Porod type analyses, for example, to estimate $R_g$, a rod diameter, or incoherent
 background level, respectively.
 
@@ -319,5 +319,5 @@
 ^^^^^^^^^^^^^^^^^^^^^^^^^
 
-This operation will perform an average in constant Q-rings around the (x,y)
+This operation will perform an average in constant $Q$ rings around the (x,y)
 pixel location of the beam center.
 
@@ -331,16 +331,16 @@
 ^^^^^^^^^^^^^^^^^^^^^^^
 
-This operation averages in constant Q-arcs.
-
-The width of the sector is specified in degrees (+/- |delta|\|phi|\) each side
-of the central angle (|phi|\).
-
-Annular average [|phi| View]
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-This operation performs an average between two Q-values centered on (0,0),
+This operation averages in constant $Q$ arcs.
+
+The width of the sector is specified in degrees ($\pm\delta|\phi|$) each side
+of the central angle $\phi$.
+
+Annular average [:math:`\phi`]
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This operation performs an average between two $Q$ values centered on (0,0),
 and averaged over a specified number of pixels.
 
-The data is returned as a function of angle (|phi|\) in degrees with zero
+The data is returned as a function of angle $\phi$ in degrees with zero
 degrees at the 3 O'clock position.
 
@@ -356,9 +356,9 @@
 ^^^^^^^^^^^^^^^^^^^
 
-This operation computes an average I(Qx) for the region of interest.
+This operation computes an average $I(Q_x)$ for the region of interest.
 
 When editing the slicer parameters, the user can control the length and the
 width the rectangular slicer. The averaged output is calculated from constant
-bins with rectangular shape. The resultant Q values are nominal values, that
+bins with rectangular shape. The resultant $Q$ values are nominal values, that
 is, the central value of each bin on the x-axis.
 
@@ -366,9 +366,9 @@
 ^^^^^^^^^^^^^^^^^^^
 
-This operation computes an average I(Qy) for the region of interest.
+This operation computes an average $I(Q_y)$ for the region of interest.
 
 When editing the slicer parameters, the user can control the length and the
 width the rectangular slicer. The averaged output is calculated from constant
-bins with rectangular shape. The resultant Q values are nominal values, that
+bins with rectangular shape. The resultant $Q$ values are nominal values, that
 is, the central value of each bin on the x-axis.
 
