  
      if (delegate_)
        delegate_->PreSandboxStartup();
+diff --git a/content/browser/browser_plugin/browser_plugin_guest.cc b/content/browser/browser_plugin/browser_plugin_guest.cc
+index abeb583eae5217510c35197703c5f702daa1df48..0c1750f8b3556b0e4b61d07a9428856b66780f44 100644
+--- a/content/browser/browser_plugin/browser_plugin_guest.cc
++++ b/content/browser/browser_plugin/browser_plugin_guest.cc
+@@ -880,6 +880,8 @@ void BrowserPluginGuest::OnDetach(int browser_plugin_instance_id) {
+     rwhv->UnregisterFrameSinkId();
+ 
+   delegate_->DidDetach();
++  // MUON(bbondy): Make sure GetGuestProxyRoutingID gets new info on re-attach
++  guest_proxy_routing_id_ = MSG_ROUTING_NONE;
+ }
+ 
+ void BrowserPluginGuest::OnDragStatusUpdate(int browser_plugin_instance_id,
 diff --git a/content/browser/frame_host/render_frame_message_filter.cc b/content/browser/frame_host/render_frame_message_filter.cc
 index c440d8061dacfa2e946abf4a3719c7c3246e0221..3246069a1114a018d57b6965fab1ea711c3d5646 100644
 --- a/content/browser/frame_host/render_frame_message_filter.cc

       ]
       #TODO(jrummell) Mac: 'DYLIB_INSTALL_NAME_BASE': '@loader_path',
     } else if (is_posix && !is_mac) {

 @property(readonly) NSTimeInterval timestamp;
 
 @end
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index dda1da688eb7ae7ad62b677e31720a5b266df97f..78cfa7d499bac245d16362a04923db222040d4d7 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -1648,8 +1648,23 @@ viz::FrameSinkId RenderWidgetHostViewAura::FrameSinkIdAtPoint(
       gfx::ConvertPointToPixel(device_scale_factor_, point);
   viz::SurfaceId id = delegated_frame_host_->SurfaceIdAtPoint(
       delegate, point_in_pixels, transformed_point);
-  *transformed_point =
-      gfx::ConvertPointToDIP(device_scale_factor_, *transformed_point);
+
+  // MUON(bbondy): When the point hasn't changed, avoid the double floor
+  // convert from pixels to DIP, which can change the input point from a
+  // couple of pixels. This can cause problems for other parts in the code
+  // like SelectionController which does an exact point comparison.  The
+  // double conversion causes a problem in particular when the DPI is not a
+  // multiple of 100.
+  // For example at 175% DPI 21 * 1.75 = 36.75, floored gives 36.
+  // Then the second DIP convert: 36 / 1.75 = 20.57, floored gives 20.
+  // Same point but we lost a pixel in that case.
+  // See: https://github.com/brave/browser-laptop/issues/8472
+  if (point_in_pixels == *transformed_point) {
+    *transformed_point = point;
+  } else {
+    *transformed_point =
+        gfx::ConvertPointToDIP(device_scale_factor_, *transformed_point);
+  }
 
   // It is possible that the renderer has not yet produced a surface, in which
   // case we return our current namespace.
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index 84897ae416fa61fddac742ab804d1f914636e064..8c28e44da23933cb1c62e11cff9966b778163834 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
