diff --git a/core/modules/overlay/lib/Drupal/overlay/Access/DismissMessageAccessCheck.php b/core/modules/overlay/lib/Drupal/overlay/Access/DismissMessageAccessCheck.php
index fca139c..9e42716 100644
--- a/core/modules/overlay/lib/Drupal/overlay/Access/DismissMessageAccessCheck.php
+++ b/core/modules/overlay/lib/Drupal/overlay/Access/DismissMessageAccessCheck.php
@@ -28,7 +28,7 @@ public function applies(Route $route) {
    */
   public function access(Route $route, Request $request) {
     $account = $request->attributes->get('_account');
-    if (!user_access('access overlay', $account)) {
+    if (!$account->hasPermission('access overlay')) {
       return static::DENY;
     }
     // It's unlikely, but possible that "access overlay" permission is granted
diff --git a/core/modules/overlay/lib/Drupal/overlay/EventSubscriber/OverlaySubscriber.php b/core/modules/overlay/lib/Drupal/overlay/EventSubscriber/OverlaySubscriber.php
index 8b8e49d..03191ad 100644
--- a/core/modules/overlay/lib/Drupal/overlay/EventSubscriber/OverlaySubscriber.php
+++ b/core/modules/overlay/lib/Drupal/overlay/EventSubscriber/OverlaySubscriber.php
@@ -80,7 +80,7 @@ public function onRequest(GetResponseEvent $event) {
     // set. Other modules can also enable the overlay directly for other uses.
     $user_data = $this->userData->get('overlay', $user->id(), 'enabled');
     $use_overlay = !isset($user_data) || $user_data;
-    if (empty($mode) && user_access('access overlay') && $use_overlay) {
+    if (empty($mode) && $user->hasPermission('access overlay') && $use_overlay) {
       $current_path = $request->attributes->get('_system_path');
       // After overlay is enabled on the modules page, redirect to
       // <front>#overlay=admin/modules to actually enable the overlay.
diff --git a/core/modules/overlay/overlay.module b/core/modules/overlay/overlay.module
index 2edb256..2c7c6bf 100644
--- a/core/modules/overlay/overlay.module
+++ b/core/modules/overlay/overlay.module
@@ -96,7 +96,7 @@ function overlay_field_extra_fields() {
  */
 function overlay_form_user_form_alter(&$form, &$form_state) {
   $account = $form_state['controller']->getEntity();
-  if (user_access('access overlay', $account)) {
+  if ($account->hasPermission('access overlay')) {
     $account_data = Drupal::service('user.data')->get('overlay', $account->id(), 'enabled');
     $form['overlay_control'] = array(
       '#type' => 'details',
@@ -232,7 +232,7 @@ function overlay_disable_message() {
   global $user;
 
   $build = array();
-  if ($user->isAnonymous() || !user_access('access overlay')) {
+  if ($user->isAnonymous() || !$user->hasPermission('access overlay')) {
     return $build;
   }
 
