diff --git a/app/assets/javascripts/boards/components/board_list_header.vue b/app/assets/javascripts/boards/components/board_list_header.vue
index e79013324f233f919ea441a95a33136e7463dfb1..20457f60adf4ba86821b594e8c4c4f756d200e24 100644
--- a/app/assets/javascripts/boards/components/board_list_header.vue
+++ b/app/assets/javascripts/boards/components/board_list_header.vue
@@ -1,6 +1,5 @@
 <script>
 import {
-  GlAvatar,
   GlButton,
   GlButtonGroup,
   GlLabel,
@@ -40,7 +39,6 @@ export default {
     ),
   },
   components: {
-    GlAvatar,
     GlButton,
     GlButtonGroup,
     GlLabel,
@@ -361,18 +359,17 @@ export default {
           'gl-mt-3 gl-rotate-90': list.collapsed,
         }"
       >
-        <gl-avatar
+        <img
           v-gl-tooltip.hover.bottom
           :title="listAssignee"
-          :label="list.assignee.name"
+          :alt="list.assignee.name"
           :src="list.assignee.avatarUrl"
-          :entity-name="list.assignee.name"
-          :size="24"
-          class="gl-mr-3"
+          class="avatar s20"
+          height="20"
+          width="20"
         />
       </a>
       <!-- EE end -->
-
       <div
         class="board-title-text"
         :class="{
diff --git a/app/assets/javascripts/diffs/components/commit_item.vue b/app/assets/javascripts/diffs/components/commit_item.vue
index 01bdd67046ce9b8ec63c030fb2439d5e2312b822..181a76be1beea49891d33ca688b006598ac2f255 100644
--- a/app/assets/javascripts/diffs/components/commit_item.vue
+++ b/app/assets/javascripts/diffs/components/commit_item.vue
@@ -125,7 +125,7 @@ export default {
             :img-src="authorAvatar"
             :img-alt="authorName"
             :img-size="32"
-            class="gl-my-2 gl-mr-4 gl-hidden gl-self-start sm:gl-block"
+            class="avatar-cell gl-my-2 gl-mr-4 gl-hidden sm:gl-block"
           />
         </div>
         <div
diff --git a/app/assets/javascripts/gfm_auto_complete.js b/app/assets/javascripts/gfm_auto_complete.js
index 0d4b182b2a21fbc741e71057eeefb8bc4f796e16..d67fa85fe81d8f186323813db237bd582fd067ff 100644
--- a/app/assets/javascripts/gfm_auto_complete.js
+++ b/app/assets/javascripts/gfm_auto_complete.js
@@ -110,9 +110,9 @@ export function membersBeforeSave(members) {
 
     const autoCompleteAvatar = member.avatar_url || member.username.charAt(0).toUpperCase();
 
-    const avatarShapeClass = member.type === GROUP_TYPE ? '' : 'gl-avatar-circle';
-    const imgAvatar = `<img src="${member.avatar_url}" alt="${member.username}" class="gl-avatar gl-avatar-s24 gl-mr-2 ${avatarShapeClass}"/>`;
-    const txtAvatar = `<div class="gl-avatar gl-avatar-s24 gl-mr-2 gl-justify-center gl-items-center ${avatarShapeClass}">${autoCompleteAvatar}</div>`;
+    const rectAvatarClass = member.type === GROUP_TYPE ? 'rect-avatar' : '';
+    const imgAvatar = `<img src="${member.avatar_url}" alt="${member.username}" class="avatar ${rectAvatarClass} avatar-inline s24 gl-mr-2"/>`;
+    const txtAvatar = `<div class="avatar ${rectAvatarClass} avatar-inline s24 gl-mr-2">${autoCompleteAvatar}</div>`;
     const avatarIcon = member.mentionsDisabled
       ? spriteIcon('notifications-off', 's16 vertical-align-middle gl-ml-2')
       : '';
diff --git a/app/assets/javascripts/sidebar/components/assignees/assignee_avatar.vue b/app/assets/javascripts/sidebar/components/assignees/assignee_avatar.vue
index 69d19b54e7bea3a43f65780b9392f8dd597ffe11..81fc2267622639d88797157a8eb82b3767d70325 100644
--- a/app/assets/javascripts/sidebar/components/assignees/assignee_avatar.vue
+++ b/app/assets/javascripts/sidebar/components/assignees/assignee_avatar.vue
@@ -1,11 +1,10 @@
 <script>
-import { GlAvatar, GlIcon } from '@gitlab/ui';
+import { GlIcon } from '@gitlab/ui';
 import { TYPE_ISSUE, TYPE_MERGE_REQUEST } from '~/issues/constants';
 import { __, sprintf } from '~/locale';
 
 export default {
   components: {
-    GlAvatar,
     GlIcon,
   },
   props: {
@@ -44,12 +43,13 @@ export default {
 </script>
 
 <template>
-  <span class="gl-relative">
-    <gl-avatar
-      :label="user.name"
-      :src="avatarUrl"
-      :size="imgSize"
+  <span class="position-relative">
+    <img
       :alt="assigneeAlt"
+      :src="avatarUrl"
+      :width="imgSize"
+      :class="`s${imgSize}`"
+      class="avatar avatar-inline m-0"
       data-testid="avatar-image"
     />
     <gl-icon v-if="hasMergeIcon" name="warning-solid" aria-hidden="true" class="merge-icon" />
diff --git a/app/assets/javascripts/sidebar/components/reviewers/reviewer_avatar.vue b/app/assets/javascripts/sidebar/components/reviewers/reviewer_avatar.vue
index 39e37591a79ac614a03d753e87a0e3ac6db10945..f93d22b411e46c61d1bedd4fe2e16a13faa0aa2f 100644
--- a/app/assets/javascripts/sidebar/components/reviewers/reviewer_avatar.vue
+++ b/app/assets/javascripts/sidebar/components/reviewers/reviewer_avatar.vue
@@ -1,12 +1,11 @@
 <script>
 // NOTE! For the first iteration, we are simply copying the implementation of Assignees
 // It will soon be overhauled in Issue https://gitlab.com/gitlab-org/gitlab/-/issues/233736
-import { GlAvatar, GlIcon } from '@gitlab/ui';
+import { GlIcon } from '@gitlab/ui';
 import { __, sprintf } from '~/locale';
 
 export default {
   components: {
-    GlAvatar,
     GlIcon,
   },
   props: {
@@ -34,8 +33,14 @@ export default {
 </script>
 
 <template>
-  <span class="gl-relative">
-    <gl-avatar :label="user.name" :src="avatarUrl" :size="imgSize" :alt="reviewerAlt" />
+  <span class="position-relative">
+    <img
+      :alt="reviewerAlt"
+      :src="avatarUrl"
+      :width="imgSize"
+      :class="`s${imgSize}`"
+      class="avatar avatar-inline m-0"
+    />
     <gl-icon
       v-if="hasMergeIcon"
       name="warning-solid"
diff --git a/app/assets/javascripts/users_select/index.js b/app/assets/javascripts/users_select/index.js
index 9ad89bdecf8294f41b8e2f010bfc70a622f70fde..acf9bec8c8f7ec73127065745910552f3bee2315 100644
--- a/app/assets/javascripts/users_select/index.js
+++ b/app/assets/javascripts/users_select/index.js
@@ -252,12 +252,12 @@ function UsersSelect(currentUser, els, options = {}) {
         });
       };
       collapsedAssigneeTemplate = template(
-        `<% if( avatar ) { %> <a class="author-link" href="/<%- username %>"> <img width="24" class="gl-avatar gl-avatar-circle gl-avatar-s24" alt="" src="<%- avatar %>"> </a> <% } else { %> ${spriteIcon(
+        `<% if( avatar ) { %> <a class="author-link" href="/<%- username %>"> <img width="24" class="avatar avatar-inline s24" alt="" src="<%- avatar %>"> </a> <% } else { %> ${spriteIcon(
           'user',
         )} <% } %>`,
       );
       assigneeTemplate = template(
-        `<% if (username) { %> <a class="author-link gl-font-bold" href="/<%- username %>"> <% if( avatar ) { %> <img width="32" class="gl-avatar gl-avatar-circle gl-avatar-s32" alt="" src="<%- avatar %>"> <% } %> <span class="author"><%- name %></span> <span class="username"> @<%- username %> </span> </a> <% } else { %> <span class="no-value assign-yourself">
+        `<% if (username) { %> <a class="author-link gl-font-bold" href="/<%- username %>"> <% if( avatar ) { %> <img width="32" class="avatar avatar-inline s32" alt="" src="<%- avatar %>"> <% } %> <span class="author"><%- name %></span> <span class="username"> @<%- username %> </span> </a> <% } else { %> <span class="no-value assign-yourself">
       ${sprintf(s__('UsersSelect|No assignee - %{openingTag} assign yourself %{closingTag}'), {
         openingTag: '<a href="#" class="js-assign-yourself">',
         closingTag: '</a>',
@@ -637,7 +637,7 @@ function UsersSelect(currentUser, els, options = {}) {
             )}</a></li>`;
           } else {
             // 0 margin, because it's now handled by a wrapper
-            img = `<img src='${avatar}' class='gl-avatar gl-avatar-circle gl-avatar-s32 !gl-m-0' width='32' />`;
+            img = `<img src='${avatar}' class='avatar avatar-inline !gl-m-0' width='32' />`;
           }
 
           return userSelect.renderRow(
diff --git a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_author.vue b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_author.vue
index e3b85e8acb4bcbd2c6dc733ea7c72bc805c7682c..79ea2624ec510923d5351075e3bbe80a5aa685d7 100644
--- a/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_author.vue
+++ b/app/assets/javascripts/vue_merge_request_widget/components/mr_widget_author.vue
@@ -1,10 +1,9 @@
 <script>
-import { GlAvatar, GlTooltipDirective, GlLink } from '@gitlab/ui';
+import { GlTooltipDirective, GlLink } from '@gitlab/ui';
 
 export default {
   name: 'MrWidgetAuthor',
   components: {
-    GlAvatar,
     GlLink,
   },
   directives: {
@@ -38,9 +37,9 @@ export default {
     :title="showAuthorName ? null : author.name"
     class="mr-widget-author"
   >
-    <gl-avatar :src="avatarUrl" :size="16" :alt="author.name" /><span
+    <img :src="avatarUrl" :alt="author.name" class="avatar avatar-inline s16" /><span
       v-if="showAuthorName"
-      class="author gl-ml-2"
+      class="author"
       >{{ author.name }}</span
     >
   </gl-link>
diff --git a/app/assets/javascripts/vue_shared/alert_details/components/sidebar/sidebar_assignees.vue b/app/assets/javascripts/vue_shared/alert_details/components/sidebar/sidebar_assignees.vue
index 237b09bc8a16aa9a3eb3e851cce6ac6d26362f43..0bf84661b10ec4d46b269b11f8360b7e59f60b5e 100644
--- a/app/assets/javascripts/vue_shared/alert_details/components/sidebar/sidebar_assignees.vue
+++ b/app/assets/javascripts/vue_shared/alert_details/components/sidebar/sidebar_assignees.vue
@@ -10,7 +10,6 @@ import {
   GlTooltip,
   GlButton,
   GlSprintf,
-  GlAvatar,
 } from '@gitlab/ui';
 import { debounce } from 'lodash';
 import axios from '~/lib/utils/axios_utils';
@@ -44,7 +43,6 @@ export default {
     GlTooltip,
     GlButton,
     GlSprintf,
-    GlAvatar,
     SidebarAssignee,
   },
   props: {
@@ -284,7 +282,7 @@ export default {
     >
       <div v-if="userName" class="gl-mt-2 gl-inline-flex" data-testid="assigned-users">
         <span class="gl-relative gl-mr-4">
-          <gl-avatar :src="userImg" :size="32" :alt="userName" />
+          <img :alt="userName" :src="userImg" :width="32" class="avatar avatar-inline s32 gl-m-0" />
         </span>
         <span class="gl-flex gl-flex-col gl-overflow-hidden">
           <strong class="dropdown-menu-user-full-name">
diff --git a/app/assets/stylesheets/components/avatar.scss b/app/assets/stylesheets/components/avatar.scss
index 7de9bffca8b70765d929fb0b1874394e31d25653..561097edbe670c52f19cb5fc9d8457f0767a7531 100644
--- a/app/assets/stylesheets/components/avatar.scss
+++ b/app/assets/stylesheets/components/avatar.scss
@@ -1,8 +1,86 @@
-// Left over of avatar. Still used in email templates.
-.avatar {
+$avatar-sizes: (
+  16: (
+    font-size: 10px,
+    line-height: 16px,
+    border-radius: $border-radius-small
+  ),
+  18: (
+    border-radius: $border-radius-small
+  ),
+  20: (
+    border-radius: $border-radius-small
+  ),
+  24: (
+    font-size: 12px,
+    line-height: 24px,
+    border-radius: $gl-border-radius-base
+  ),
+  26: (
+    font-size: 20px,
+    line-height: 1.33,
+    border-radius: $gl-border-radius-base
+  ),
+  32: (
+    font-size: 14px,
+    line-height: 32px,
+    border-radius: $gl-border-radius-base
+  ),
+  40: (
+    font-size: 16px,
+    line-height: 38px,
+    border-radius: $gl-border-radius-base
+  ),
+  48: (
+    font-size: 20px,
+    line-height: 48px,
+    border-radius: $border-radius-large
+  ),
+  60: (
+    font-size: 32px,
+    line-height: 60px,
+    border-radius: $border-radius-large
+  ),
+  64: (
+    font-size: 28px,
+    line-height: 64px,
+    border-radius: $border-radius-large
+  ),
+  90: (
+    font-size: 36px,
+    line-height: 90px,
+    border-radius: $border-radius-large
+  ),
+  96: (
+    font-size: 36px,
+    line-height: 94px,
+    border-radius: $border-radius-large
+  ),
+  100: (
+    font-size: 36px,
+    line-height: 98px,
+    border-radius: $border-radius-large
+  ),
+  160: (
+    font-size: 96px,
+    line-height: 158px,
+    border-radius: $border-radius-large
+  )
+);
+
+.avatar,
+.avatar-container {
   float: left;
   margin-right: $gl-padding;
   border-radius: $avatar-radius;
+
+  @each $size, $size-config in $avatar-sizes {
+    &.s#{$size} {
+      @include avatar-size(#{$size}px, if($size < 48, 8px, 16px));
+    }
+  }
+}
+
+.avatar {
   transition-property: none;
   width: 40px;
   height: 40px;
@@ -11,6 +89,18 @@
   overflow: hidden;
   box-shadow: inset 0 0 0 1px var(--gl-avatar-border-color-default);
 
+  &.avatar-inline {
+    float: none;
+    display: inline-block;
+    margin-left: 2px;
+    flex-shrink: 0;
+
+    &.s16,
+    &.s24 {
+      margin-right: 4px;
+    }
+  }
+
   &.center {
     font-size: 14px;
     line-height: 1.8em;
@@ -23,6 +113,80 @@
   }
 }
 
+.identicon {
+  text-align: center;
+  vertical-align: top;
+  color: var(--gl-text-color-strong);
+  background-color: var(--gl-avatar-fallback-background-color-neutral);
+
+  // Sizes
+  @each $size, $size-config in $avatar-sizes {
+    $keys: map-keys($size-config);
+
+    &.s#{$size} {
+      @each $key in $keys {
+        // We don't want `border-radius` to be included here.
+        @if ($key != 'border-radius') {
+          #{$key}: map-get($size-config, #{$key});
+        }
+      }
+    }
+  }
+
+  // Background colors
+  @for $i from 1 through length($gl-avatar-identicon-bgs) {
+    &.bg#{$i} {
+      color: nth($gl-avatar-identicon-texts, $i);
+      background-color: nth($gl-avatar-identicon-bgs, $i);
+    }
+  }
+}
+
+.avatar-container {
+  overflow: hidden;
+  display: flex;
+
+  a {
+    width: 100%;
+    height: 100%;
+    display: flex;
+    text-decoration: none;
+  }
+
+  .avatar {
+    border-radius: 0;
+    border: 0;
+    height: auto;
+    width: 100%;
+    margin: 0;
+    align-self: center;
+  }
+
+  &.s40 {
+    min-width: 40px;
+    min-height: 40px;
+  }
+
+  &.s64 {
+    min-width: 64px;
+    min-height: 64px;
+  }
+}
+
+.rect-avatar {
+  border-radius: $border-radius-small;
+
+  @each $size, $size-config in $avatar-sizes {
+    &.s#{$size} {
+      border-radius: map-get($size-config, 'border-radius');
+
+      .avatar {
+        border-radius: map-get($size-config, 'border-radius');
+      }
+    }
+  }
+}
+
 .avatar-counter {
   @include avatar-counter();
 }
diff --git a/app/assets/stylesheets/framework/dropdowns.scss b/app/assets/stylesheets/framework/dropdowns.scss
index 2a0f1ad2ac65b4f4dd59a14de5126e2709ad1439..128755d59e884eaf1126fe667601de67d0856343 100644
--- a/app/assets/stylesheets/framework/dropdowns.scss
+++ b/app/assets/stylesheets/framework/dropdowns.scss
@@ -505,10 +505,6 @@
       top: calc(50% + 5px);
       left: 3rem;
     }
-
-    .gl-avatar {
-      margin-right: 0;
-    }
   }
 }
 
diff --git a/app/assets/stylesheets/framework/lists.scss b/app/assets/stylesheets/framework/lists.scss
index f81f47a7ecd063f96e1557d682483509872dec0e..c53e376e53e90886897cf0dc9c1e7b6d9a70418d 100644
--- a/app/assets/stylesheets/framework/lists.scss
+++ b/app/assets/stylesheets/framework/lists.scss
@@ -164,6 +164,10 @@ ul.content-list {
   .badge-secondary {
     color: $gl-text-color-secondary;
   }
+
+  .avatar-cell {
+    align-self: flex-start;
+  }
 }
 
 ul.content-list.content-list-items-padding > li,
@@ -190,6 +194,14 @@ ul.controls {
     &:last-child {
       margin-right: 0;
     }
+
+    .author-link {
+      .avatar-inline {
+        margin-left: 0;
+        margin-right: 0;
+        margin-bottom: 0;
+      }
+    }
   }
 
   .issuable-pipeline-broken a,
diff --git a/app/assets/stylesheets/page_bundles/_ide_theme_overrides.scss b/app/assets/stylesheets/page_bundles/_ide_theme_overrides.scss
index d915e22773c1514d685e88b480d368ed5461ae29..7bf86242cad93fedacc259ef543982bbcb706ff0 100644
--- a/app/assets/stylesheets/page_bundles/_ide_theme_overrides.scss
+++ b/app/assets/stylesheets/page_bundles/_ide_theme_overrides.scss
@@ -172,6 +172,16 @@
     .gl-tabs-nav li a.gl-tab-nav-item-active {
       box-shadow: inset 0 -2px 0 0 var(--ide-highlight-accent, $gl-text-color);
     }
+
+    // for other themes, suppress different avatar default colors for simplicity
+    .avatar-container {
+      &,
+      .avatar {
+        color: var(--ide-text-color, $gl-text-color);
+        background-color: var(--ide-highlight-background, $white);
+        border-color: var(--ide-highlight-background, rgba($black, $gl-avatar-border-opacity));
+      }
+    }
   }
 
   input[type='text'],
diff --git a/app/assets/stylesheets/page_bundles/ide.scss b/app/assets/stylesheets/page_bundles/ide.scss
index c0bafd314a9170f03c70b343034b0ba193979bdb..382fb0db134eeb6c56ed031b63c83c7e0e6ce332 100644
--- a/app/assets/stylesheets/page_bundles/ide.scss
+++ b/app/assets/stylesheets/page_bundles/ide.scss
@@ -863,6 +863,11 @@ $ide-commit-header-height: 48px;
 }
 
 .ide-context-header {
+  .avatar-container {
+    flex: 0 0 auto;
+    margin-right: 0;
+  }
+
   .ide-sidebar-project-title {
     margin-left: $ide-tree-text-start - $ide-project-avatar-end;
   }
diff --git a/app/assets/stylesheets/page_bundles/projects.scss b/app/assets/stylesheets/page_bundles/projects.scss
index 2d5a08712898cdfe8a495b64d3111b13c7f9391d..483a3e427bc61243799e9883a5daac11ba2331a7 100644
--- a/app/assets/stylesheets/page_bundles/projects.scss
+++ b/app/assets/stylesheets/page_bundles/projects.scss
@@ -372,6 +372,16 @@
       table-layout: fixed;
     }
 
+    .avatar-container {
+      @include avatar-size(40px, 10px);
+      min-height: 40px;
+      min-width: 40px;
+
+      .identicon.s48 {
+        font-size: 16px;
+      }
+    }
+
     .updated-note {
       @include media-breakpoint-up(sm) {
         margin-top: $gl-spacing-scale-2;
diff --git a/app/assets/stylesheets/pages/groups.scss b/app/assets/stylesheets/pages/groups.scss
index 6ebe8f86162e98c401caede15bd5ebf911d64ae7..c873d1bac030cfa9026cef22b8d1e9da9404f9ad 100644
--- a/app/assets/stylesheets/pages/groups.scss
+++ b/app/assets/stylesheets/pages/groups.scss
@@ -140,6 +140,15 @@ table.pipeline-project-metrics tr td {
       flex-basis: 100%;
     }
 
+    .avatar-container {
+      flex-shrink: 0;
+
+      > a {
+        width: 100%;
+        text-decoration: none;
+      }
+    }
+
     .title {
       font-size: $gl-font-size;
     }
diff --git a/app/assets/stylesheets/themes/dark_mode_overrides.scss b/app/assets/stylesheets/themes/dark_mode_overrides.scss
index 60c96d09260dcd66492f923554d1daddc5a3e2cb..55c47ddb5847dfc9f181699120ed2f3058f94ebe 100644
--- a/app/assets/stylesheets/themes/dark_mode_overrides.scss
+++ b/app/assets/stylesheets/themes/dark_mode_overrides.scss
@@ -65,6 +65,7 @@
 }
 
 .gl-avatar:not(.gl-avatar-identicon),
+.avatar-container,
 .avatar {
   background: rgba($gray-950, 0.04);
 }
diff --git a/app/assets/stylesheets/vendors/atwho.scss b/app/assets/stylesheets/vendors/atwho.scss
index e3684dc3d324daa4be1294aa48b4173a53764755..ef4eddbcba5887310adf777146596ec2c945eb58 100644
--- a/app/assets/stylesheets/vendors/atwho.scss
+++ b/app/assets/stylesheets/vendors/atwho.scss
@@ -21,6 +21,10 @@
     margin-top: $gl-spacing-scale-2;
   }
 
+  .avatar-inline {
+    margin-bottom: 0;
+  }
+
   .has-warning {
     .description {
       color: $gray-900;
diff --git a/app/helpers/avatars_helper.rb b/app/helpers/avatars_helper.rb
index e3c60a7a12d89e0d2160fa9b6961e982402a7354..599978af0a92839c6af3fa3a2ce586dac8b1e968 100644
--- a/app/helpers/avatars_helper.rb
+++ b/app/helpers/avatars_helper.rb
@@ -94,7 +94,7 @@ def user_avatar_without_link(options = {})
 
     has_tooltip = options[:has_tooltip].nil? ? true : options[:has_tooltip]
     data_attributes = options[:data] || {}
-    css_class = %W[gl-avatar gl-avatar-circle gl-avatar-s#{avatar_size}].push(*options[:css_class])
+    css_class = %W[avatar s#{avatar_size}].push(*options[:css_class])
     alt_text = user_name ? "#{user_name}'s avatar" : "default avatar"
 
     if has_tooltip
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index 4b5b5131567b8d63857f44b1b90ffbdaaff0025c..ba29d0e8977faf92d78bfc8c238bad795ee80584 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -29,7 +29,7 @@ def link_to_member_avatar(author, opts = {})
     default_opts = { size: 16 }
     opts = default_opts.merge(opts)
 
-    classes = %W[gl-avatar gl-avatar-circle gl-avatar-s#{opts[:size]}]
+    classes = %W[avatar avatar-inline s#{opts[:size]}]
     classes << opts[:avatar_class] if opts[:avatar_class]
 
     avatar = avatar_icon_for_user(author, opts[:size])
diff --git a/app/helpers/sidebars_helper.rb b/app/helpers/sidebars_helper.rb
index 492c22fde089052441ec4b55ee33caae2475d7c1..929da0b2cf58a227d1fe3bfc275f2b392183117f 100644
--- a/app/helpers/sidebars_helper.rb
+++ b/app/helpers/sidebars_helper.rb
@@ -9,7 +9,7 @@ def sidebar_tracking_attributes_by_object(object)
   end
 
   def scope_avatar_classes(object)
-    %w[gl-avatar gl-avatar-s32].tap do |klasses|
+    %w[avatar-container rect-avatar s32].tap do |klasses|
       klass = sidebar_attributes_for_object(object).fetch(:scope_avatar_class, nil)
       klasses << klass if klass
     end
diff --git a/app/helpers/wiki_page_version_helper.rb b/app/helpers/wiki_page_version_helper.rb
index 577b6252b0fbbb03741a36d535f3a8f9f9d3d94e..34864fddc925038875d1ca9d186079f609dea926 100644
--- a/app/helpers/wiki_page_version_helper.rb
+++ b/app/helpers/wiki_page_version_helper.rb
@@ -7,4 +7,8 @@ def wiki_page_version_author_url(wiki_page_version)
     user = wiki_page_version.author
     user.nil? ? "mailto:#{wiki_page_version.author_email}" : Gitlab::UrlBuilder.build(user)
   end
+
+  def wiki_page_version_author_avatar(wiki_page_version)
+    image_tag(avatar_icon_for_email(wiki_page_version.author_email, 24), class: "avatar s24 float-none !gl-mr-0")
+  end
 end
diff --git a/app/views/projects/commits/_commit.html.haml b/app/views/projects/commits/_commit.html.haml
index a07d147b76c5c2c515dc3300de3db21897f59fd6..24444743575d99c9b2d5d3672a3ab07328ca664d 100644
--- a/app/views/projects/commits/_commit.html.haml
+++ b/app/views/projects/commits/_commit.html.haml
@@ -24,8 +24,8 @@
 - add_page_specific_style 'page_bundles/commit_description'
 
 %li{ class: ["commit flex-row", ("js-toggle-container" if collapsible)], id: "commit-#{commit.short_id}" }
-  .gl-self-start.gl-hidden.sm:gl-block.gl-mr-3
-    = author_avatar(commit, size: 32, has_tooltip: false)
+  .avatar-cell.gl-hidden.sm:gl-block
+    = author_avatar(commit, size: 40, has_tooltip: false)
 
   .commit-detail.flex-list.gl-flex.gl-justify-between.gl-items-center.gl-grow.gl-min-w-0
     .commit-content{ data: { testid: 'commit-content' } }
@@ -46,7 +46,7 @@
         - if commit.different_committer? && commit.committer
           - commit_committer_link = commit_committer_link(commit)
           - commit_committer_timeago = time_ago_with_tooltip(commit.committed_date, placement: 'bottom')
-          - commit_committer_avatar = commit_committer_avatar(commit.committer, size: 16, has_tooltip: false)
+          - commit_committer_avatar = commit_committer_avatar(commit.committer, size: 18, has_tooltip: false)
           - commit_text =  _('%{commit_author_link} authored %{commit_authored_timeago} and %{commit_committer_avatar} %{commit_committer_link} committed %{commit_committer_timeago}') % { commit_author_link: commit_author_link, commit_authored_timeago: commit_authored_timeago, commit_committer_avatar: commit_committer_avatar, commit_committer_link: commit_committer_link, commit_committer_timeago: commit_committer_timeago }
         - else
           - commit_text =  _('%{commit_author_link} authored %{commit_authored_timeago}') % { commit_author_link: commit_author_link, commit_authored_timeago: commit_authored_timeago }
diff --git a/app/views/shared/issuable/_user_dropdown_item.html.haml b/app/views/shared/issuable/_user_dropdown_item.html.haml
index 51147bc2ae92191a83794466b806775b507fafe4..0bd211a2cc56bfd11cb1a0db1fb60059269759d8 100644
--- a/app/views/shared/issuable/_user_dropdown_item.html.haml
+++ b/app/views/shared/issuable/_user_dropdown_item.html.haml
@@ -4,7 +4,7 @@
 %li.filter-dropdown-item{ class: ('js-current-user' if user == current_user) }
   = render Pajamas::ButtonComponent.new(variant: :link, button_text_classes: 'gl-flex gl-items-center') do
     .gl-shrink-0
-      = user_avatar_without_link(user: user, lazy: avatar[:lazy], url: avatar[:url], size: 32, has_tooltip: false)
+      = user_avatar_without_link(user: user, lazy: avatar[:lazy], url: avatar[:url], size: 40, has_tooltip: false)
     .gl-flex.gl-flex-col
       %span.gl-font-bold.gl-whitespace-normal.gl-break-words
         = user.name
diff --git a/app/views/shared/milestones/_issuable.html.haml b/app/views/shared/milestones/_issuable.html.haml
index 5f05403b53b1b5006cbe751e864e3323a7f924c0..9a3df35d4bf323764a1a5b8c9ac08e8641a34e8b 100644
--- a/app/views/shared/milestones/_issuable.html.haml
+++ b/app/views/shared/milestones/_issuable.html.haml
@@ -24,6 +24,6 @@
       - assignees.each do |assignee|
         = link_to polymorphic_path(issuable_type_args, { milestone_title: @milestone.title, assignee_id: assignee.id, state: 'all' }),
                   class: 'has-tooltip', title: _("Assigned to %{assignee_name}") % { assignee_name: assignee.name }, data: { container: 'body' } do
-          - image_tag(avatar_icon_for_user(assignee, 16), class: "gl-avatar gl-avatar-circle gl-avatar-s16", alt: '')
+          - image_tag(avatar_icon_for_user(assignee, 16), class: "avatar s16", alt: '')
 
     = render_if_exists "shared/milestones/issuable_weight", issuable: issuable
diff --git a/ee/app/views/profiles/billings/_billing_plan_header.html.haml b/ee/app/views/profiles/billings/_billing_plan_header.html.haml
index 8dc72be9d2347312c79092528eafe70a748b571c..ae1a6bfe0dbb6af6fe94b1fe984ea269fe6c4a20 100644
--- a/ee/app/views/profiles/billings/_billing_plan_header.html.haml
+++ b/ee/app/views/profiles/billings/_billing_plan_header.html.haml
@@ -2,7 +2,7 @@
 
 .billing-plan-header.content-block.gl-text-center
   .billing-plan-logo
-    .gl-flex.gl-justify-center.home-panel-avatar.gl-mb-6.gl-mt-2{ class: '!gl-mx-auto' }
+    .avatar-container.s96.home-panel-avatar.gl-mr-3.float-none.gl-mb-6.gl-mt-2{ class: '!gl-mx-auto' }
       = user_avatar_without_link(user: current_user, class: 'mb-3', size: 96)
 
   %h4
diff --git a/ee/app/views/shared/billings/_billing_plans_layout.html.haml b/ee/app/views/shared/billings/_billing_plans_layout.html.haml
index 3ef4b670538d204cf4d5dbdf7451c61206e1adbc..15d7e9955d72c969ed4bdf17d2b9bb46f477a875 100644
--- a/ee/app/views/shared/billings/_billing_plans_layout.html.haml
+++ b/ee/app/views/shared/billings/_billing_plans_layout.html.haml
@@ -3,7 +3,7 @@
     - if namespace.avatar_url.present?
       = render Pajamas::AvatarComponent.new(namespace, alt: namespace.name, class: 'border rounded gl-mb-5 gl-mt-2', size: 96)
     - else
-      .gl-flex.gl-justify-center.home-panel-avatar.gl-mb-6.gl-mt-2{ class: '!gl-mx-auto' }
+      .avatar-container.rect-avatar.s96.home-panel-avatar.gl-mr-3.float-none.gl-mb-6.gl-mt-2{ class: '!gl-mx-auto' }
         = render Pajamas::AvatarComponent.new(namespace, alt: namespace.name, size: 96)
 
   %h4{ data: { testid: 'billing-plan-header-content' } }
diff --git a/ee/app/views/shared/credentials_inventory/users/_user_detail.html.haml b/ee/app/views/shared/credentials_inventory/users/_user_detail.html.haml
index 54c5c31a692d4d5fcd78a12b576dbf5649d9316a..962bc10b445dddec6fd90f987d4364a85ae60c10 100644
--- a/ee/app/views/shared/credentials_inventory/users/_user_detail.html.haml
+++ b/ee/app/views/shared/credentials_inventory/users/_user_detail.html.haml
@@ -1,10 +1,10 @@
 .flex-list
   .flex-row
-    = user_avatar_without_link(user: user, size: 32, css_class: 'gl-hidden md:gl-flex gl-mr-3')
+    = user_avatar_without_link(user: user, size: 32, css_class: 'avatar s32 gl-hidden md:gl-flex')
     .row-main-content
       .row-title.str-truncated-100
-        = user_avatar_without_link(user: user, size: 16, css_class: 'md:gl-hidden gl-mr-2')
+        = user_avatar_without_link(user: user, size: 16, css_class: 'avatar s16 gl-flex md:gl-hidden mr-1 gl-mt-2')
         = link_to user.name, user_detail_path(user), class: 'gl-text-default hover:gl-text-default js-user-link', data: { user_id: user.id }
 
       .row-second-line.str-truncated-100
-        = mail_to user.email, user.email, class: '!gl-text-subtle'
+        = mail_to user.email, user.email, class: '!gl-text-secondary'
diff --git a/lib/banzai/filter/commit_trailers_filter.rb b/lib/banzai/filter/commit_trailers_filter.rb
index c4d131daa7dcb96be9eff2c1cc910b78cff51e5a..058faccf924473b161416e25cf23546b18eaf461 100644
--- a/lib/banzai/filter/commit_trailers_filter.rb
+++ b/lib/banzai/filter/commit_trailers_filter.rb
@@ -90,7 +90,7 @@ def link_to_user(user, name:, email:, trailer:)
         avatar = user_avatar_without_link(
           user: user,
           user_email: email,
-          css_class: 'gl-mr-2',
+          css_class: 'avatar-inline',
           has_tooltip: false,
           only_path: false
         )
diff --git a/spec/frontend/gfm_auto_complete_spec.js b/spec/frontend/gfm_auto_complete_spec.js
index 5f08566ee070e39bc99464ae7da5fdde9b33c821..f490424081e783758f2dbd171923157bac6aff05 100644
--- a/spec/frontend/gfm_auto_complete_spec.js
+++ b/spec/frontend/gfm_auto_complete_spec.js
@@ -557,8 +557,7 @@ describe('GfmAutoComplete', () => {
       expect(membersBeforeSave([{ ...mockGroup, avatar_url: null }])).toEqual([
         {
           username: 'my-group',
-          avatarTag:
-            '<div class="gl-avatar gl-avatar-s24 gl-mr-2 gl-justify-center gl-items-center ">M</div>',
+          avatarTag: '<div class="avatar rect-avatar avatar-inline s24 gl-mr-2">M</div>',
           title: 'My Group (2)',
           search: 'MyGroup my-group',
           icon: '',
@@ -571,7 +570,7 @@ describe('GfmAutoComplete', () => {
         {
           username: 'my-group',
           avatarTag:
-            '<img src="./group.jpg" alt="my-group" class="gl-avatar gl-avatar-s24 gl-mr-2 "/>',
+            '<img src="./group.jpg" alt="my-group" class="avatar rect-avatar avatar-inline s24 gl-mr-2"/>',
           title: 'My Group (2)',
           search: 'MyGroup my-group',
           icon: '',
@@ -584,7 +583,7 @@ describe('GfmAutoComplete', () => {
         {
           username: 'my-group',
           avatarTag:
-            '<img src="./group.jpg" alt="my-group" class="gl-avatar gl-avatar-s24 gl-mr-2 "/>',
+            '<img src="./group.jpg" alt="my-group" class="avatar rect-avatar avatar-inline s24 gl-mr-2"/>',
           title: 'My Group',
           search: 'MyGroup my-group',
           icon: '<svg class="s16 vertical-align-middle gl-ml-2"><use xlink:href="/icons.svg#notifications-off" /></svg>',
@@ -601,7 +600,7 @@ describe('GfmAutoComplete', () => {
         {
           username: 'my-user',
           avatarTag:
-            '<img src="./users.jpg" alt="my-user" class="gl-avatar gl-avatar-s24 gl-mr-2 gl-avatar-circle"/>',
+            '<img src="./users.jpg" alt="my-user" class="avatar  avatar-inline s24 gl-mr-2"/>',
           title: 'My User',
           search: 'MyUser my-user',
           icon: '',
diff --git a/spec/frontend/groups/components/group_item_spec.js b/spec/frontend/groups/components/group_item_spec.js
index b33832fb4f8431cbe2e3019ff66fc31e32eda328..e89acbadedec747a9b2e9a73061eea761c420501 100644
--- a/spec/frontend/groups/components/group_item_spec.js
+++ b/spec/frontend/groups/components/group_item_spec.js
@@ -260,8 +260,9 @@ describe('GroupItemComponent', () => {
       expect(vm.$el.querySelector('.folder-toggle-wrap')).toBeDefined();
       expect(vm.$el.querySelector('.folder-toggle-wrap .item-type-icon')).toBeDefined();
 
-      expect(vm.$el.querySelector('.gl-avatar')).toBeDefined();
-      expect(vm.$el.querySelector('.gl-avatar a.no-expand')).toBeDefined();
+      expect(vm.$el.querySelector('.avatar-container')).toBeDefined();
+      expect(vm.$el.querySelector('.avatar-container a.no-expand')).toBeDefined();
+      expect(vm.$el.querySelector('.avatar-container .avatar')).toBeDefined();
 
       expect(vm.$el.querySelector('.title')).toBeDefined();
       expect(vm.$el.querySelector('.title a.no-expand')).toBeDefined();
diff --git a/spec/frontend/sidebar/components/assignees/assignee_avatar_spec.js b/spec/frontend/sidebar/components/assignees/assignee_avatar_spec.js
index 36090f15305ac3f795e9b46a1d150e5890fe4288..b6b3dbd5b6b65393158b9a1a9f03a583cfc5262c 100644
--- a/spec/frontend/sidebar/components/assignees/assignee_avatar_spec.js
+++ b/spec/frontend/sidebar/components/assignees/assignee_avatar_spec.js
@@ -1,5 +1,4 @@
 import { shallowMount } from '@vue/test-utils';
-import { GlAvatar } from '@gitlab/ui';
 import { TEST_HOST } from 'helpers/test_constants';
 import AssigneeAvatar from '~/sidebar/components/assignees/assignee_avatar.vue';
 import userDataMock from '../../user_data_mock';
@@ -27,7 +26,7 @@ describe('AssigneeAvatar', () => {
     window.gon = { default_avatar_url: TEST_DEFAULT_AVATAR_URL };
   });
 
-  const findImg = () => wrapper.findComponent(GlAvatar);
+  const findImg = () => wrapper.find('img');
 
   it('does not show warning icon if assignee can merge', () => {
     createComponent();
diff --git a/spec/frontend/sidebar/components/assignees/assignees_spec.js b/spec/frontend/sidebar/components/assignees/assignees_spec.js
index 878a0ec007c2b76ea8bf9979f3b5eee43a46654b..2767d36ac3d96d1d7686444a1a76e7e9980e4d06 100644
--- a/spec/frontend/sidebar/components/assignees/assignees_spec.js
+++ b/spec/frontend/sidebar/components/assignees/assignees_spec.js
@@ -1,4 +1,4 @@
-import { GlAvatar, GlIcon } from '@gitlab/ui';
+import { GlIcon } from '@gitlab/ui';
 import { mount } from '@vue/test-utils';
 import { trimText } from 'helpers/text_helper';
 import UsersMockHelper from 'helpers/user_mock_data_helper';
@@ -79,10 +79,8 @@ describe('Assignee component', () => {
       const assignee = collapsedChildren.at(0);
 
       expect(collapsedChildren.length).toBe(1);
-      expect(assignee.findComponent(GlAvatar).attributes('src')).toBe(UsersMock.user.avatar);
-      expect(assignee.findComponent(GlAvatar).attributes('alt')).toBe(
-        `${UsersMock.user.name}'s avatar`,
-      );
+      expect(assignee.find('.avatar').attributes('src')).toBe(UsersMock.user.avatar);
+      expect(assignee.find('.avatar').attributes('alt')).toBe(`${UsersMock.user.name}'s avatar`);
 
       expect(trimText(assignee.find('.author').text())).toBe(UsersMock.user.name);
     });
@@ -102,15 +100,15 @@ describe('Assignee component', () => {
 
       const first = collapsedChildren.at(0);
 
-      expect(first.findComponent(GlAvatar).attributes('src')).toBe(users[0].avatar_url);
-      expect(first.findComponent(GlAvatar).attributes('alt')).toBe(`${users[0].name}'s avatar`);
+      expect(first.find('.avatar').attributes('src')).toBe(users[0].avatar_url);
+      expect(first.find('.avatar').attributes('alt')).toBe(`${users[0].name}'s avatar`);
 
       expect(trimText(first.find('.author').text())).toBe(users[0].name);
 
       const second = collapsedChildren.at(1);
 
-      expect(second.findComponent(GlAvatar).attributes('src')).toBe(users[1].avatar_url);
-      expect(second.findComponent(GlAvatar).attributes('alt')).toBe(`${users[1].name}'s avatar`);
+      expect(second.find('.avatar').attributes('src')).toBe(users[1].avatar_url);
+      expect(second.find('.avatar').attributes('alt')).toBe(`${users[1].name}'s avatar`);
 
       expect(trimText(second.find('.author').text())).toBe(users[1].name);
     });
@@ -128,8 +126,8 @@ describe('Assignee component', () => {
 
       const first = collapsedChildren.at(0);
 
-      expect(first.findComponent(GlAvatar).attributes('src')).toBe(users[0].avatar_url);
-      expect(first.findComponent(GlAvatar).attributes('alt')).toBe(`${users[0].name}'s avatar`);
+      expect(first.find('.avatar').attributes('src')).toBe(users[0].avatar_url);
+      expect(first.find('.avatar').attributes('alt')).toBe(`${users[0].name}'s avatar`);
 
       expect(trimText(first.find('.author').text())).toBe(users[0].name);
 
diff --git a/spec/frontend/vue_merge_request_widget/components/mr_widget_author_spec.js b/spec/frontend/vue_merge_request_widget/components/mr_widget_author_spec.js
index b935e7c47ab944adc749381f820acc0b0b2b541a..7eafccae08312ffec8ef6064831c8f054f6f3676 100644
--- a/spec/frontend/vue_merge_request_widget/components/mr_widget_author_spec.js
+++ b/spec/frontend/vue_merge_request_widget/components/mr_widget_author_spec.js
@@ -1,5 +1,4 @@
 import { shallowMount } from '@vue/test-utils';
-import { GlAvatar } from '@gitlab/ui';
 import { nextTick } from 'vue';
 import MrWidgetAuthor from '~/vue_merge_request_widget/components/mr_widget_author.vue';
 
@@ -38,7 +37,7 @@ describe('MrWidgetAuthor', () => {
   });
 
   it('renders image with avatar url', () => {
-    expect(wrapper.findComponent(GlAvatar).attributes('src')).toBe(
+    expect(wrapper.find('img').attributes('src')).toBe(
       'http://www.gravatar.com/avatar/e64c7d89f26bd1972efa854d13d7dd61?s=80&d=identicon',
     );
   });
@@ -53,7 +52,7 @@ describe('MrWidgetAuthor', () => {
 
     await nextTick();
 
-    expect(wrapper.findComponent(GlAvatar).props('src')).toBe('no_avatar.png');
+    expect(wrapper.find('img').attributes('src')).toBe('no_avatar.png');
   });
 
   it('renders author name', () => {
diff --git a/spec/frontend/vue_shared/alert_details/sidebar/alert_sidebar_assignees_spec.js b/spec/frontend/vue_shared/alert_details/sidebar/alert_sidebar_assignees_spec.js
index 75384e7a1154953128fe02a6e115197e889f7f07..bf4435fae4570c90fc5b484d89181f17e4bb3908 100644
--- a/spec/frontend/vue_shared/alert_details/sidebar/alert_sidebar_assignees_spec.js
+++ b/spec/frontend/vue_shared/alert_details/sidebar/alert_sidebar_assignees_spec.js
@@ -1,6 +1,6 @@
 import Vue from 'vue';
 import VueApollo from 'vue-apollo';
-import { GlAvatar, GlDropdownItem } from '@gitlab/ui';
+import { GlDropdownItem } from '@gitlab/ui';
 import axios from 'axios';
 import MockAdapter from 'axios-mock-adapter';
 import { shallowMountExtended } from 'helpers/vue_test_utils_helper';
@@ -146,7 +146,7 @@ describe('Alert Details Sidebar Assignees', () => {
         props: { alert: mockAlerts[1] },
       });
 
-      expect(findAssigned().findComponent(GlAvatar).props('src')).toBe('/url');
+      expect(findAssigned().find('img').attributes('src')).toBe('/url');
       expect(findAssigned().find('.dropdown-menu-user-full-name').text()).toBe('root');
       expect(findAssigned().find('.dropdown-menu-user-username').text()).toBe('@root');
     });
diff --git a/spec/helpers/avatars_helper_spec.rb b/spec/helpers/avatars_helper_spec.rb
index 33a2c0007058e15457b7f4d1d71a934d77d9ddbd..d988bded4ea57cf4c682dbaf213bf4f767f32a87 100644
--- a/spec/helpers/avatars_helper_spec.rb
+++ b/spec/helpers/avatars_helper_spec.rb
@@ -290,7 +290,7 @@
         alt: "#{user.name}'s avatar",
         src: avatar_icon_for_user(user, 16),
         data: { container: 'body' },
-        class: 'gl-avatar gl-avatar-circle gl-avatar-s16 has-tooltip',
+        class: 'avatar s16 has-tooltip',
         title: user.name
       )
     end
@@ -303,7 +303,7 @@
           alt: "#{user.name}'s avatar",
           src: avatar_icon_for_user(user, 16),
           data: { container: 'body' },
-          class: "gl-avatar gl-avatar-circle gl-avatar-s16 #{options[:css_class]} has-tooltip",
+          class: "avatar s16 #{options[:css_class]} has-tooltip",
           title: user.name
         )
       end
@@ -317,7 +317,7 @@
           alt: "#{user.name}'s avatar",
           src: avatar_icon_for_user(user, options[:size]),
           data: { container: 'body' },
-          class: "gl-avatar gl-avatar-circle gl-avatar-s#{options[:size]} has-tooltip",
+          class: "avatar s#{options[:size]} has-tooltip",
           title: user.name
         )
       end
@@ -331,7 +331,7 @@
           alt: "#{user.name}'s avatar",
           src: options[:url],
           data: { container: 'body' },
-          class: "gl-avatar gl-avatar-circle gl-avatar-s16 has-tooltip",
+          class: "avatar s16 has-tooltip",
           title: user.name
         )
       end
@@ -345,7 +345,7 @@
           alt: "#{user.name}'s avatar",
           src: LazyImageTagHelper.placeholder_image,
           data: { container: 'body', src: avatar_icon_for_user(user, 16) },
-          class: "gl-avatar gl-avatar-circle gl-avatar-s16 has-tooltip lazy",
+          class: "avatar s16 has-tooltip lazy",
           title: user.name
         )
       end
@@ -360,7 +360,7 @@
             alt: "#{user.name}'s avatar",
             src: avatar_icon_for_user(user, 16),
             data: { container: 'body' },
-            class: "gl-avatar gl-avatar-circle gl-avatar-s16 has-tooltip",
+            class: "avatar s16 has-tooltip",
             title: user.name
           )
         end
@@ -373,7 +373,7 @@
           is_expected.to eq tag.img(
             alt: "#{user.name}'s avatar",
             src: avatar_icon_for_user(user, 16),
-            class: "gl-avatar gl-avatar-circle gl-avatar-s16",
+            class: "avatar s16",
             title: user.name
           )
         end
@@ -391,7 +391,7 @@
             alt: "#{user.name}'s avatar",
             src: avatar_icon_for_user(user, 16),
             data: { container: 'body' },
-            class: "gl-avatar gl-avatar-circle gl-avatar-s16 has-tooltip",
+            class: "avatar s16 has-tooltip",
             title: user.name
           )
         end
@@ -402,7 +402,7 @@
           alt: "#{options[:user_name]}'s avatar",
           src: helper.avatar_icon_for_email(options[:user_email], 16),
           data: { container: 'body' },
-          class: "gl-avatar gl-avatar-circle gl-avatar-s16 has-tooltip",
+          class: "avatar s16 has-tooltip",
           title: options[:user_name]
         )
       end
@@ -419,7 +419,7 @@
             alt: "#{user_with_avatar.name}'s avatar",
             src: avatar_icon_for_user(user_with_avatar, 16, only_path: false),
             data: { container: 'body' },
-            class: "gl-avatar gl-avatar-circle gl-avatar-s16 has-tooltip",
+            class: "avatar s16 has-tooltip",
             title: user_with_avatar.name
           )
         end
@@ -433,7 +433,7 @@
             alt: "#{user_with_avatar.username}'s avatar",
             src: helper.avatar_icon_for_email(user_with_avatar.email, 16, only_path: false),
             data: { container: 'body' },
-            class: "gl-avatar gl-avatar-circle gl-avatar-s16 has-tooltip",
+            class: "avatar s16 has-tooltip",
             title: user_with_avatar.username
           )
         end
@@ -462,7 +462,7 @@
           alt: "#{user.name}'s avatar",
           src: avatar_icon_for_user(user, 32),
           data: { container: 'body' },
-          class: 'gl-avatar gl-avatar-circle gl-avatar-s32 has-tooltip',
+          class: 'avatar s32 has-tooltip',
           title: user.name
         )
       end
diff --git a/spec/helpers/projects_helper_spec.rb b/spec/helpers/projects_helper_spec.rb
index 1039939787d8c8f022739a878e3cac2540f152cb..89b63c403353131fcfe8ed17a17fb074984406a9 100644
--- a/spec/helpers/projects_helper_spec.rb
+++ b/spec/helpers/projects_helper_spec.rb
@@ -335,13 +335,13 @@
     end
 
     it 'returns image tag for member avatar' do
-      expect(helper).to receive(:image_tag).with(expected, { width: 16, class: %w[gl-avatar gl-avatar-circle gl-avatar-s16], alt: "" })
+      expect(helper).to receive(:image_tag).with(expected, { width: 16, class: %w[avatar avatar-inline s16], alt: "" })
 
       helper.link_to_member_avatar(user)
     end
 
     it 'returns image tag with avatar class' do
-      expect(helper).to receive(:image_tag).with(expected, { width: 16, class: %w[gl-avatar gl-avatar-circle gl-avatar-s16 any-avatar-class], alt: "" })
+      expect(helper).to receive(:image_tag).with(expected, { width: 16, class: %w[avatar avatar-inline s16 any-avatar-class], alt: "" })
 
       helper.link_to_member_avatar(user, avatar_class: "any-avatar-class")
     end
diff --git a/spec/helpers/wiki_page_version_helper_spec.rb b/spec/helpers/wiki_page_version_helper_spec.rb
index 7e1b5f635abeee6038672e988515e41ca8f53923..a43e25bbfd1d48363be3bf301cac79d6ee1da3f6 100644
--- a/spec/helpers/wiki_page_version_helper_spec.rb
+++ b/spec/helpers/wiki_page_version_helper_spec.rb
@@ -29,4 +29,18 @@
       end
     end
   end
+
+  describe '#wiki_page_version_author_avatar' do
+    let(:commit) { commit_with_user }
+
+    subject { helper.wiki_page_version_author_avatar(wiki_page_version) }
+
+    it 'returns the user avatar', :aggregate_failures do
+      avatar = Nokogiri::HTML.parse(subject)
+
+      expect(avatar.css('img')[0].attr('class')).to eq('avatar s24 float-none !gl-mr-0 lazy')
+      expect(avatar.css('img')[0].attr('data-src')).not_to be_empty
+      expect(avatar.css('img')[0].attr('src')).not_to be_empty
+    end
+  end
 end