diff --git a/CHANGELOG b/CHANGELOG
index daa7ed2a1e5a207517f400f8228e7add74084473..c71e54a9148d69fc776c7428e4323f2c6911ecb3 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -32,8 +32,9 @@ v 8.10.0 (unreleased)
   - Add basic system information like memory and disk usage to the admin panel
 
 v 8.9.5 (unreleased)
-  - Fix assigning shared runners as admins
-  - Show "locked" label for locked runners on runners admin
+  - Improve the request / withdraw access button. !4860
+  - Fix assigning shared runners as admins. !4961
+  - Show "locked" label for locked runners on runners admin. !4961
 
 v 8.9.4
   - Fix privilege escalation issue with OAuth external users.
diff --git a/app/assets/stylesheets/framework/mobile.scss b/app/assets/stylesheets/framework/mobile.scss
index c74682dfef4db1ada19bb6fac2366d5aa010e449..367c7d019441b4c5500ec106914ab05c9070cb60 100644
--- a/app/assets/stylesheets/framework/mobile.scss
+++ b/app/assets/stylesheets/framework/mobile.scss
@@ -71,6 +71,10 @@
     display: none;
   }
 
+  .group-right-buttons {
+    display: none;
+  }
+
   .container .title {
     padding-left: 15px !important;
   }
diff --git a/app/assets/stylesheets/pages/groups.scss b/app/assets/stylesheets/pages/groups.scss
index 101faf5917430cead44c9c2b3f7c76d1652fd440..3d79f4400e24a0a73eb853610b71d50fb67d698e 100644
--- a/app/assets/stylesheets/pages/groups.scss
+++ b/app/assets/stylesheets/pages/groups.scss
@@ -41,14 +41,17 @@
 }
 
 .groups-cover-block {
-
   .container-fluid {
     position: relative;
   }
 
-  .access-request-button {
-    @include btn-gray;
-    margin-right: 10px;
-    text-transform: none;
+  .group-right-buttons {
+    position: absolute;
+    right: 16px;
+    .btn {
+      @include btn-gray;
+      padding: 3px 10px;
+      background-color: $background-color;
+    }
   }
 }
diff --git a/app/assets/stylesheets/pages/projects.scss b/app/assets/stylesheets/pages/projects.scss
index 89ce1b2df2093a8b6f327496cc59e577abc92334..817c2982923c22cd94ec6cfba263cfe838c7caca 100644
--- a/app/assets/stylesheets/pages/projects.scss
+++ b/app/assets/stylesheets/pages/projects.scss
@@ -266,18 +266,6 @@
     @media (max-width: $screen-md-max) {
       top: 0;
     }
-
-    .access-request-button {
-      position: absolute;
-      right: 0;
-      bottom: 61px;
-
-      @media (max-width: $screen-md-max) {
-        position: relative;
-        bottom: 0;
-        margin-right: 10px;
-      }
-    }
   }
 
   @media (max-width: $screen-md-max) {
diff --git a/app/views/groups/show.html.haml b/app/views/groups/show.html.haml
index 69f634e75b9b407c274171ebe447302e75b49526..a83eb7e88bb3a001e2eb90807742df5808d74570 100644
--- a/app/views/groups/show.html.haml
+++ b/app/views/groups/show.html.haml
@@ -15,18 +15,15 @@
           %span.visibility-icon.has-tooltip{ data: { container: 'body' }, title: visibility_icon_description(@group) }
             = visibility_level_icon(@group.visibility_level, fw: false)
 
-        %span.hidden-xs
+        .group-right-buttons.btn-group
+          - if current_user
+            .pull-left.append-right-10= render 'shared/members/access_request_buttons', source: @group
           = render 'shared/notifications/button', notification_setting: @notification_setting
 
-        - if current_user
-          .pull-right
-            = render 'shared/members/access_request_buttons', source: @group
-
       - if @group.description.present?
         .cover-desc.description
           = markdown(@group.description, pipeline: :description)
 
-
 %div{ class: container_class }
   .top-area
     %ul.nav-links
diff --git a/app/views/projects/_home_panel.html.haml b/app/views/projects/_home_panel.html.haml
index 8ce23379fb4e6af25ffc0f527ed295ea3a3d43a9..540efa4780f72856125746cf14c6dfaeab5d37a6 100644
--- a/app/views/projects/_home_panel.html.haml
+++ b/app/views/projects/_home_panel.html.haml
@@ -31,7 +31,7 @@
 
       .project-repo-buttons.btn-group.project-right-buttons
         - if current_user
-          = render 'shared/members/access_request_buttons', source: @project
+          .pull-left.append-right-10= render 'shared/members/access_request_buttons', source: @project
 
         = render "projects/buttons/download"
         = render 'projects/buttons/dropdown'
diff --git a/app/views/shared/members/_access_request_buttons.html.haml b/app/views/shared/members/_access_request_buttons.html.haml
index 480e8ba6c8545e422644025dffb363c6f6fa2114..c56418f052a50e2fc30054b777fe5e2e3e87eacd 100644
--- a/app/views/shared/members/_access_request_buttons.html.haml
+++ b/app/views/shared/members/_access_request_buttons.html.haml
@@ -7,8 +7,8 @@
       = link_to 'Withdraw Access Request', polymorphic_path([:leave, source, :members]),
                 method: :delete,
                 data: { confirm: remove_member_message(member) },
-                class: 'btn access-request-button hidden-xs'
+                class: 'btn'
   - else
     = link_to 'Request Access', polymorphic_path([:request_access, source, :members]),
               method: :post,
-              class: 'btn access-request-button hidden-xs'
+              class: 'btn'
diff --git a/doc/workflow/add-user/img/access_requests_management.png b/doc/workflow/add-user/img/access_requests_management.png
index e9641cb4f85b9112a2ab2bfc4868081fe28caaae..5c9b510ba9ded53271e25134779e766f5602bab0 100644
Binary files a/doc/workflow/add-user/img/access_requests_management.png and b/doc/workflow/add-user/img/access_requests_management.png differ
diff --git a/doc/workflow/groups.md b/doc/workflow/groups.md
index 1a316e80976d8c3e80932831680809139f71b103..9b50286b179dd4c4f4d9e31aefea11449b674768 100644
--- a/doc/workflow/groups.md
+++ b/doc/workflow/groups.md
@@ -51,7 +51,7 @@ If necessary, you can increase the access level of an individual user for a spec
 
 ![Barry effectively has 'Master' access to GitLab CI now](groups/override_access_level.png)
 
-## Request access to a group
+## Requesting access to a group
 
 As a user, you can request to be a member of a group. Go to the group you'd
 like to be a member of, and click the **Request Access** button on the right
diff --git a/doc/workflow/groups/access_requests_management.png b/doc/workflow/groups/access_requests_management.png
index ffede8e9bd68495ad70e5ac2b12fc47d7da03260..5202434f00f6a8eef27a2ce9a58de2b6572a5767 100644
Binary files a/doc/workflow/groups/access_requests_management.png and b/doc/workflow/groups/access_requests_management.png differ
diff --git a/doc/workflow/groups/request_access_button.png b/doc/workflow/groups/request_access_button.png
index ff0ac8747a7cde212a2cc01581ea656bd7294b82..0eec5cb937d01f011618b92ccc516589b1d9cf1f 100644
Binary files a/doc/workflow/groups/request_access_button.png and b/doc/workflow/groups/request_access_button.png differ
diff --git a/doc/workflow/groups/withdraw_access_request_button.png b/doc/workflow/groups/withdraw_access_request_button.png
index 99d7a326ed897d328154d3b8f959a7b2da9ba228..b7de830a78057a2e73262c7205f835ef0bcc71d2 100644
Binary files a/doc/workflow/groups/withdraw_access_request_button.png and b/doc/workflow/groups/withdraw_access_request_button.png differ