diff --git a/indra/media_plugins/webkit/media_plugin_webkit.cpp b/indra/media_plugins/webkit/media_plugin_webkit.cpp
index 276ad39dfbac89c19559192f98f520c360ab67d8..76e2c080beb95dd3a89146a9aa57bf4543fb1738 100644
--- a/indra/media_plugins/webkit/media_plugin_webkit.cpp
+++ b/indra/media_plugins/webkit/media_plugin_webkit.cpp
@@ -626,7 +626,11 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
 			}
 			else if(message_name == "cleanup")
 			{
-				// TODO: clean up here
+				// DTOR most likely won't be called but the recent change to the way this process
+				// is (not) killed means we see this message and can do what we need to here.
+				// Note: this cleanup is ultimately what writes cookies to the disk
+				LLQtWebKit::getInstance()->remObserver( mBrowserWindowId, this );
+				LLQtWebKit::getInstance()->reset();
 			}
 			else if(message_name == "shm_added")
 			{
@@ -635,7 +639,6 @@ void MediaPluginWebKit::receiveMessage(const char *message_string)
 				info.mSize = (size_t)message_in.getValueS32("size");
 				std::string name = message_in.getValue("name");
 				
-				
 //				std::cerr << "MediaPluginWebKit::receiveMessage: shared memory added, name: " << name 
 //					<< ", size: " << info.mSize 
 //					<< ", address: " << info.mAddress 
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 72630cc413fbdf8b9bc3c661ccdd71fdcaf646e9..a6679c5fbf12532fb8002b8d58695b803f6e1443 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1784,6 +1784,7 @@ if (WINDOWS)
     qtnetworkd4.dll
     qtopengld4.dll
     qtwebkitd4.dll
+    qtxmlpatternsd4.dll
     ssleay32.dll
     )
   copy_if_different(
@@ -1803,6 +1804,7 @@ if (WINDOWS)
     qtnetwork4.dll
     qtopengl4.dll
     qtwebkit4.dll
+    qtxmlpatterns4.dll    
     ssleay32.dll
     )
   copy_if_different(
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 32fdd41be2cdd6a7355f80700647a3ae56552cfb..5090dc9ce424f993de6d4e5a68c17e87936cd7e5 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -324,6 +324,7 @@ def construct(self):
             self.path("qtnetwork4.dll")
             self.path("qtopengl4.dll")
             self.path("qtwebkit4.dll")
+            self.path("qtxmlpatternsd4.dll")
             self.path("ssleay32.dll")
             self.end_prefix()
 
diff --git a/indra/test_apps/llplugintest/CMakeLists.txt b/indra/test_apps/llplugintest/CMakeLists.txt
index 0011daaec6e9b36f36e579690000cb5364d6bd05..12310f9ecdcaf823aae57bcee944c6276bc5bdf7 100644
--- a/indra/test_apps/llplugintest/CMakeLists.txt
+++ b/indra/test_apps/llplugintest/CMakeLists.txt
@@ -435,6 +435,7 @@ if(WINDOWS)
     qtnetwork4.dll
     qtopengl4.dll
     qtwebkit4.dll
+    qtxmlpatterns4.dll
     ssleay32.dll
     )
   copy_if_different(
diff --git a/install.xml b/install.xml
index 2d60f07c11d4be864857361b7c3d98b196b8f88e..3ce7a37bde01ea44460e6b852ef9905e6e2d0d27 100644
--- a/install.xml
+++ b/install.xml
@@ -962,9 +962,9 @@ anguage Infrstructure (CLI) international standard</string>
           <key>windows</key>
           <map>
             <key>md5sum</key>
-            <string>92cff05661b5547caae7cc6c66d09870</string>
+            <string>3846354e2e20a98c0401317eb114ff5e</string>
             <key>url</key>
-            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-20091123.tar.bz2</uri>
+            <uri>http://s3.amazonaws.com/viewer-source-downloads/install_pkgs/llqtwebkit-windows-qt4.6-20091215.tar.bz2</uri>
           </map>
         </map>
       </map>