diff --git a/autobuild.xml b/autobuild.xml
index 08fd69f2f294fb0c0a37900ea04a7d14d3fecf45..fa21054499e4c5e4e237c7c5e1b7637d24565f88 100644
--- a/autobuild.xml
+++ b/autobuild.xml
@@ -604,16 +604,16 @@
             <key>archive</key>
             <map>
               <key>hash</key>
-              <string>0c0ef3d529fcde0d966d24af39175041</string>
+              <string>9e12e974d00d6f45b2cbb891fa8a4747</string>
               <key>url</key>
-              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/77425/734566/dullahan-1.9.1.202102230022_88.2.8_ge484012_chromium-88.0.4324.150-windows64-556277.tar.bz2</string>
+              <string>https://automated-builds-secondlife-com.s3.amazonaws.com/ct2/77546/735174/dullahan-1.9.1.202102242217_88.2.8_ge484012_chromium-88.0.4324.150-windows64-556355.tar.bz2</string>
             </map>
             <key>name</key>
             <string>windows64</string>
           </map>
         </map>
         <key>version</key>
-        <string>1.9.1.202102230022_88.2.8_ge484012_chromium-88.0.4324.150</string>
+        <string>1.9.1.202102242217_88.2.8_ge484012_chromium-88.0.4324.150</string>
       </map>
       <key>elfio</key>
       <map>
diff --git a/indra/media_plugins/cef/media_plugin_cef.cpp b/indra/media_plugins/cef/media_plugin_cef.cpp
index 0bb62d79ff09c9e491d751333fbf69fb859ea09e..c658f354805a8ed11ba9d0dcec0b908f19f0d258 100644
--- a/indra/media_plugins/cef/media_plugin_cef.cpp
+++ b/indra/media_plugins/cef/media_plugin_cef.cpp
@@ -525,8 +525,18 @@ void MediaPluginCEF::receiveMessage(const char* message_string)
 				mCEFLib->setOnJSDialogCallback(std::bind(&MediaPluginCEF::onJSDialogCallback, this, std::placeholders::_1, std::placeholders::_2, std::placeholders::_3));
 				
 				dullahan::dullahan_settings settings;
+#if LL_WINDOWS
+				// As of CEF version 83+, for Windows versions, we need to tell CEF 
+				// where the host helper process is since this DLL is not in the same
+				// dir as the executable that loaded it (SLPlugin.exe). The code in 
+				// Dullahan that tried to figure out the location automatically uses 
+				// the location of the exe which isn't helpful so we tell it explicitly.
+				char cur_dir_str[MAX_PATH];
+				GetCurrentDirectoryA(MAX_PATH, cur_dir_str);
+				settings.host_process_path = std::string(cur_dir_str);
+#endif
 				settings.accept_language_list = mHostLanguage;
-				settings.background_color = 0xffffffff;
+				settings.background_color = 0xff282828; // close to Viewer background color
 				settings.cache_enabled = true;
 				settings.root_cache_path = mRootCachePath;
 				settings.cache_path = mCachePath;
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 6d231040f77b21c2bc8fb1cd7dc6a67ebb3eb212..3ce3aae46937a31ae71bd39db4038ca077c32ec0 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -611,6 +611,12 @@ def construct(self):
                 self.path("msvcp140.dll")
                 self.path("vcruntime140.dll")
 
+            # as of CEF 88, this (apparently software rendering support)
+            # folder is required - likely a Chromium bug - but including
+            # for now until the root cause is found - it's tiny
+            with self.prefix(src=os.path.join(pkgdir, 'bin', 'release')):
+                self.path("swiftshader/")
+
             # CEF files common to all configurations
             with self.prefix(src=os.path.join(pkgdir, 'resources')):
                 self.path("cef.pak")