### Preflight Checklist

- [X] I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/main/CONTRIBUTING.md) for this project.
- [X] I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/main/CODE_OF_CONDUCT.md) that this project adheres to.
- [X] I have searched the [issue tracker](https://www.github.com/electron/electron/issues) for a feature request that matches the one I want to file, without success.

### Electron Version

16.0.0

### What operating system are you using?

macOS

### Operating System Version

macOS Monterey 12.0.1

### What arch are you using?

x64

### Last Known Working Electron version

n/a

### Expected Behavior

Window does not have a white background when vibrancy is set to under-window + transparent background is used on macOS

### Actual Behavior

Window with vibrancy and transparency enabled is rendered with a white background, at random

### Testcase Gist URL

_No response_

### Additional Information

We're still hitting random issues with Electron where creating a window with vibrancy + transparent body will result in a white background. I was hopeful that the 16.0.0 release would have fixed this as it was mentioned in the changelog, but seems like the issue persists.

I've tried to narrow down to a reproducible case, but didn't manage to do so - I've observed all these variations across executions:

- Window opens with correct vibrancy effect, and it works without issues
- Windows opens with correct vibrancy effect then goes white after ~4 seconds - consistently after ~4 seconds
- Window opens with correct vibrancy, stays without issues, but loses after some time of switching between apps
- Windows open with effect already not working and a white background

I've already tried all suggestions from previous issues like #30993 or #31461 . The window is created with vibrancy set to under-window, has a transparent background and the webpreferences also has a transparent background set. As it works sometimes, I assume the options here are correct.

My guess is that this is somehow related to #31019: Electron is using somehow the background color of the HTML body. As we initially load the window with about:empty, then navigate to our url, the transparent background logic might be loading the incorrect background color at random times and breaking the transparency/vibrancy effect from there on. 

I also don't know if #31722 is already merged on the 16.0.0 release - happy to test if not the case once it is again!

shell/browser/api/electron_api_web_contents.cc
}
#if !defined(OS_MAC)
   If the view's renderer is suspended this may fail on Windows/Linux -
   bail if so. See CopyFromSurface in
   content/public/browser/render_widget_host_view.h.
  auto* rfh = ontents()->GetMainFrame();
  if (rfh &&
      rfh->GetVisibilityState() == blink::mojom::PageVisibilityState::kHidden) {
    promise.Resolve(gfx::Image());
    return handle;
  }
#endif   defined(OS_MAC)
   Capture full page if user doesn't specify a |rect|.
  const gfx::Size view_size =
      rect.IsEmpty() ? view->GetViewBounds().size() : rect.size();
   By default, the requested bitmap size is the view size in screen
   coordinates.  However, if there's more pixel detail available on the
   current system, increase the requested bitmap size to capture it all.
  gfx::Size bitmap_size = view_size;
  const gfx::NativeView native_view = view->GetNativeView();
  const float scale = display::Screen::GetScreen()
                          ->GetDisplayNearestView(native_view)
                          .device_scale_factor();
  if (scale > 1.0f)
    bitmap_size = gfx::ScaleToCeiledSize(view_size, scale);
  view->CopyFromSurface(gfx::Rect(rect.origin(), view_size), bitmap_size,
                        base::BindOnce(&OnCapturePageDone, std::move(promise)));
  return handle;
}
void WebContents::IncrementCapturerCount(gin::Arguments* args) {