diff --git a/chrome/app/chrome_exe_main_win.cc b/chrome/app/chrome_exe_main_win.cc
index 319f03ffaa9bb..19921d07f82fb 100644
--- a/chrome/app/chrome_exe_main_win.cc
+++ b/chrome/app/chrome_exe_main_win.cc
@@ -380,10 +380,6 @@ int main() {
   // The exit manager is in charge of calling the dtors of singletons.
   base::AtExitManager exit_manager;
 
-  // Only enable High DPI support for browser and GPU process.
-  if (process_type.empty() || process_type == switches::kGpuProcess)
-    base::win::EnableHighDPISupport();
-
   if (AttemptFastNotify(*command_line))
     return 0;
 
diff --git a/content/browser/browser_main_runner_impl.cc b/content/browser/browser_main_runner_impl.cc
index 6a2302dd99dbe..ca75beb5df7ea 100644
--- a/content/browser/browser_main_runner_impl.cc
+++ b/content/browser/browser_main_runner_impl.cc
@@ -36,6 +36,7 @@
 #endif
 
 #if BUILDFLAG(IS_WIN)
+#include "base/win/win_util.h"
 #include "base/win/windows_version.h"
 #include "ui/base/win/scoped_ole_initializer.h"
 #endif
@@ -91,6 +92,7 @@ int BrowserMainRunnerImpl::Initialize(MainFunctionParams parameters) {
     notification_service_ = std::make_unique<NotificationServiceImpl>();
 
 #if BUILDFLAG(IS_WIN)
+    base::win::EnableHighDPISupport();
     // Ole must be initialized before starting message pump, so that TSF
     // (Text Services Framework) module can interact with the message pump
     // on Windows 8 Metro mode.
diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc
index 160763ceb3318..5c3bcea340870 100644
--- a/content/gpu/gpu_main.cc
+++ b/content/gpu/gpu_main.cc
@@ -80,6 +80,7 @@
 #if BUILDFLAG(IS_WIN)
 #include "base/trace_event/trace_event_etw_export_win.h"
 #include "base/win/scoped_com_initializer.h"
+#include "base/win/win_util.h"
 #include "base/win/windows_version.h"
 #include "media/gpu/windows/dxva_video_decode_accelerator_win.h"
 #include "media/gpu/windows/media_foundation_video_encode_accelerator_win.h"
@@ -218,6 +219,7 @@ int GpuMain(MainFunctionParams parameters) {
   base::TimeTicks start_time = base::TimeTicks::Now();
 
 #if BUILDFLAG(IS_WIN)
+  base::win::EnableHighDPISupport();
   base::trace_event::TraceEventETWExport::EnableETWExport();
 
   // Prevent Windows from displaying a modal dialog on failures like not being
diff --git a/content/utility/utility_main.cc b/content/utility/utility_main.cc
index 1520e8feba29e..c15f7b9bbcbdf 100644
--- a/content/utility/utility_main.cc
+++ b/content/utility/utility_main.cc
@@ -70,6 +70,7 @@
 
 #if BUILDFLAG(IS_WIN)
 #include "base/rand_util.h"
+#include "base/win/win_util.h"
 #include "base/win/windows_version.h"
 #include "sandbox/win/src/sandbox.h"
 
@@ -246,6 +247,21 @@ int UtilityMain(MainFunctionParams parameters) {
     UNREFERENCED_PARAMETER(shell32_pin);
   }
 
+  // Not all utility processes require DPI awareness as this context only
+  // pertains to certain workloads & impacted system API calls (e.g. UX
+  // scaling or per-monitor windowing). We do not blanket apply DPI awareness
+  // as utility processes running within a kService sandbox with the Win32K
+  // Lockdown policy applied may crash when calling EnableHighDPISupport. See
+  // crbug.com/978133.
+  if (sandbox_type == sandbox::mojom::Sandbox::kMediaFoundationCdm) {
+    // The Media Foundation Utility Process needs to be marked as DPI aware so
+    // the Media Engine & CDM can correctly identify the target monitor for
+    // video output. This is required to ensure that the proper monitor is
+    // queried for hardware capabilities & any settings are applied to the
+    // correct monitor.
+    base::win::EnableHighDPISupport();
+  }
+
   if (!sandbox::policy::IsUnsandboxedSandboxType(sandbox_type) &&
       sandbox_type != sandbox::mojom::Sandbox::kCdm &&
       sandbox_type != sandbox::mojom::Sandbox::kMediaFoundationCdm &&
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png
index 45cedaf6d809e..ec3327479b123 100644
Binary files a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png and b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/popup-menu-appearance-expected.png differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
index cd45df5ff7221..dcaf63f38f5e0 100644
Binary files a/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png and b/third_party/blink/web_tests/platform/win/virtual/scalefactor150/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png
index 7d325df9aab9b..8514171ea4cb6 100644
Binary files a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png and b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/popup-menu-appearance-expected.png differ
diff --git a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png
index dd9fc52566568..7a792e8a34ba6 100644
Binary files a/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png and b/third_party/blink/web_tests/platform/win/virtual/scalefactor200/fast/hidpi/static/validation-bubble-appearance-hidpi-expected.png differ