diff --git a/win/vncviewer/CConnOptions.cxx b/win/vncviewer/CConnOptions.cxx
index 7829d1b..7bf36eb 100644
--- a/win/vncviewer/CConnOptions.cxx
+++ b/win/vncviewer/CConnOptions.cxx
@@ -388,7 +388,7 @@
 
 void CConnOptions::writeDefaults() {
   RegKey key;
-  key.createKey(HKEY_CURRENT_USER, _T("Software\\TightVNC\\VNCviewer4"));
+  key.createKey(HKEY_CURRENT_USER, _T("Software\\TigerVNC\\VNCviewer4"));
   key.setBool(_T("UseLocalCursor"), useLocalCursor);
   key.setBool(_T("UseDesktopResize"), useDesktopResize);
   key.setBool(_T("FullScreen"), fullScreen);
diff --git a/win/vncviewer/DesktopWindow.cxx b/win/vncviewer/DesktopWindow.cxx
index 5a9fe4e..c85730a 100644
--- a/win/vncviewer/DesktopWindow.cxx
+++ b/win/vncviewer/DesktopWindow.cxx
@@ -1268,7 +1268,7 @@
     strCopy(desktopName, name, sizeof(desktopName));
   }
   char *newTitle = new char[strlen(desktopName)+20];
-  sprintf(newTitle, "TightVNC: %.240s @ %i%%", desktopName, getDesktopScale());
+  sprintf(newTitle, "TigerVNC: %.240s @ %i%%", desktopName, getDesktopScale());
   SetWindowText(handle, TStr(newTitle));
   delete [] newTitle;
 }
diff --git a/win/vncviewer/FTDialog.cxx b/win/vncviewer/FTDialog.cxx
index dd094e7..bf819a3 100644
--- a/win/vncviewer/FTDialog.cxx
+++ b/win/vncviewer/FTDialog.cxx
@@ -28,9 +28,9 @@
 using namespace rfb;
 using namespace rfb::win32;
 
-const char FTDialog::szCheckDeleteQueueText[]    = "TightVNC.Viewer.CheckDeleteQueue.Msg";
-const char FTDialog::szCheckTransferQueueText[]  = "TightVNC.Viewer.CheckTransferQueue.Msg";
-const char FTDialog::szUploadFilePortionText[]   = "TightVNC.Viewer.UploadFilePortion.Msg";
+const char FTDialog::szCheckDeleteQueueText[]    = "TigerVNC.Viewer.CheckDeleteQueue.Msg";
+const char FTDialog::szCheckTransferQueueText[]  = "TigerVNC.Viewer.CheckTransferQueue.Msg";
+const char FTDialog::szUploadFilePortionText[]   = "TigerVNC.Viewer.UploadFilePortion.Msg";
 
 FTDialog::FTDialog(HINSTANCE hInst, FileTransfer *pFT)
 {
diff --git a/win/vncviewer/MRU.h b/win/vncviewer/MRU.h
index fd9bf71..a0aef81 100644
--- a/win/vncviewer/MRU.h
+++ b/win/vncviewer/MRU.h
@@ -32,7 +32,7 @@
     namespace MRU {
 
       static const RegKey RegRoot = HKEY_CURRENT_USER;
-      static const TCHAR* RegPath = _T("Software\\TightVNC\\VNCViewer4\\MRU");
+      static const TCHAR* RegPath = _T("Software\\TigerVNC\\VNCViewer4\\MRU");
       static const int MaxMRUEntries = 256;
       static const int MRUEntries = 10;
 
diff --git a/win/vncviewer/vncviewer.cxx b/win/vncviewer/vncviewer.cxx
index f8f2fb5..060e8a1 100644
--- a/win/vncviewer/vncviewer.cxx
+++ b/win/vncviewer/vncviewer.cxx
@@ -205,7 +205,7 @@
 
 #ifdef _DIALOG_CAPTURE
     if (captureDialogs) {
-      CConn::userConfigKey.openKey(HKEY_CURRENT_USER, _T("Software\\TightVNC\\VNCViewer4"));
+      CConn::userConfigKey.openKey(HKEY_CURRENT_USER, _T("Software\\TigerVNC\\VNCViewer4"));
       OptionsDialog::global.showDialog(0, true);
       return 0;
     }
@@ -221,10 +221,10 @@
     if (!configFiles.empty() || !hosts.empty() || acceptIncoming) {
       // - Configure the registry configuration reader
       win32::RegConfigThread config;
-      config.start(HKEY_CURRENT_USER, _T("Software\\TightVNC\\VNCViewer4"));
+      config.start(HKEY_CURRENT_USER, _T("Software\\TigerVNC\\VNCViewer4"));
 
       // - Tell the rest of VNC Viewer where to write config data to
-      CConn::userConfigKey.createKey(HKEY_CURRENT_USER, _T("Software\\TightVNC\\VNCViewer4"));
+      CConn::userConfigKey.createKey(HKEY_CURRENT_USER, _T("Software\\TigerVNC\\VNCViewer4"));
 
       if (acceptIncoming) {
         int port = 5500;
diff --git a/win/vncviewer/vncviewer.exe.manifest b/win/vncviewer/vncviewer.exe.manifest
index 7fd947f..daab6db 100644
--- a/win/vncviewer/vncviewer.exe.manifest
+++ b/win/vncviewer/vncviewer.exe.manifest
@@ -3,7 +3,7 @@
 <assemblyIdentity
    version="4.0.0.26"
    processorArchitecture="X86"
-   name="TightVNC.vncviewer.exe"
+   name="TigerVNC.vncviewer.exe"
    type="win32"
 />
 <description>.NET control deployment tool</description>
diff --git a/win/vncviewer/vncviewer.rc b/win/vncviewer/vncviewer.rc
index 0f26d46..91d0567 100644
--- a/win/vncviewer/vncviewer.rc
+++ b/win/vncviewer/vncviewer.rc
@@ -85,14 +85,14 @@
         BEGIN
             VALUE "Comments", "\0"
             VALUE "CompanyName", "Constantin Kaplinsky\0"
-            VALUE "FileDescription", "TightVNC Viewer for Win32\0"
+            VALUE "FileDescription", "TigerVNC Viewer for Win32\0"
             VALUE "FileVersion", "4.1.1\0"
             VALUE "InternalName", "free4/vncviewer/win\0"
             VALUE "LegalCopyright", "Copyright (C) 1998-2006 [many holders]\0"
-            VALUE "LegalTrademarks", "TightVNC\0"
+            VALUE "LegalTrademarks", "TigerVNC\0"
             VALUE "OriginalFilename", "vncviewer.exe\0"
             VALUE "PrivateBuild", "\0"
-            VALUE "ProductName", "TightVNC Viewer\0"
+            VALUE "ProductName", "TigerVNC Viewer\0"
             VALUE "ProductVersion", "4.1.1\0"
             VALUE "SpecialBuild", "\0"
         END
@@ -169,7 +169,7 @@
     LTEXT           ">version<",IDC_VERSION,165,10,77,15
     LTEXT           ">buildtime<",IDC_BUILDTIME,46,25,196,15
     LTEXT           ">copyright<",IDC_COPYRIGHT,46,40,196,15
-    LTEXT           "Visit www.tightvnc.com for more information on TightVNC.",
+    LTEXT           "Visit www.tigervnc.org for more information on TigerVNC.",
                     IDC_STATIC,46,55,196,15
 END
 
@@ -313,7 +313,7 @@
 STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | 
     WS_SYSMENU
 EXSTYLE WS_EX_CONTEXTHELP | WS_EX_CONTROLPARENT
-CAPTION "TightVNC File Transfers"
+CAPTION "TigerVNC File Transfers"
 FONT 8, "MS Sans Serif", 0, 0, 0x1
 BEGIN
     CONTROL         "List1",IDC_FTLOCALLIST,"SysListView32",LVS_REPORT | 
@@ -349,7 +349,7 @@
     PUSHBUTTON      "",IDC_FTREMOTEUP,495,20,14,12,BS_ICON | NOT WS_TABSTOP
     PUSHBUTTON      "",IDC_FTREMOTERELOAD,509,20,14,12,BS_ICON | NOT 
                     WS_TABSTOP
-    CTEXT           "TightVNC Server",IDC_FTREMOTELABEL,323,7,200,10
+    CTEXT           "TigerVNC Server",IDC_FTREMOTELABEL,323,7,200,10
     LTEXT           "Current File",IDC_STATIC,323,245,36,8
     CTEXT           "0%",IDC_FTGENERALPERCENT,189,245,18,8
     CTEXT           "0%",IDC_FTSINGLEPERCENT,505,245,18,8
