diff --git a/.rubocop_todo/layout/argument_alignment.yml b/.rubocop_todo/layout/argument_alignment.yml
index 98633709bee8e2c71227950d2596400a0637a56b..1e862c88b3ce053b6232fa251790df3294764033 100644
--- a/.rubocop_todo/layout/argument_alignment.yml
+++ b/.rubocop_todo/layout/argument_alignment.yml
@@ -1096,7 +1096,6 @@ Layout/ArgumentAlignment:
     - 'spec/controllers/projects/clusters_controller_spec.rb'
     - 'spec/controllers/projects/commit_controller_spec.rb'
     - 'spec/controllers/projects/design_management/designs/raw_images_controller_spec.rb'
-    - 'spec/controllers/projects/design_management/designs/resized_image_controller_spec.rb'
     - 'spec/controllers/projects/environments_controller_spec.rb'
     - 'spec/controllers/projects/feature_flags_clients_controller_spec.rb'
     - 'spec/controllers/projects/forks_controller_spec.rb'
diff --git a/.rubocop_todo/layout/first_hash_element_indentation.yml b/.rubocop_todo/layout/first_hash_element_indentation.yml
index a4b520add75ebb83997afd0c06a08450f8812fcc..facc7a58f1a2c6215b26ebf1cebb7748702a3ada 100644
--- a/.rubocop_todo/layout/first_hash_element_indentation.yml
+++ b/.rubocop_todo/layout/first_hash_element_indentation.yml
@@ -176,7 +176,6 @@ Layout/FirstHashElementIndentation:
     - 'spec/controllers/projects/commit_controller_spec.rb'
     - 'spec/controllers/projects/commits_controller_spec.rb'
     - 'spec/controllers/projects/design_management/designs/raw_images_controller_spec.rb'
-    - 'spec/controllers/projects/design_management/designs/resized_image_controller_spec.rb'
     - 'spec/controllers/projects/environments_controller_spec.rb'
     - 'spec/controllers/projects/issues_controller_spec.rb'
     - 'spec/controllers/projects/jobs_controller_spec.rb'
diff --git a/app/controllers/projects/design_management/designs/resized_image_controller.rb b/app/controllers/projects/design_management/designs/resized_image_controller.rb
index 50a997f32dbb41740a2718553871e0fddae5dba4..6bf304419e1d8cfb277938c6e680bdb4ad4961c5 100644
--- a/app/controllers/projects/design_management/designs/resized_image_controller.rb
+++ b/app/controllers/projects/design_management/designs/resized_image_controller.rb
@@ -8,12 +8,13 @@ class ResizedImageController < Projects::DesignManagement::DesignsController
         include SendFileUpload
 
         before_action :validate_size!
+        before_action :validate_sha!
 
         skip_before_action :default_cache_headers, only: :show
 
         def show
           relation = design.actions
-          relation = relation.up_to_version(sha) if sha
+          relation = relation.up_to_version(version) if version
           action = relation.most_recent.first
 
           return render_404 unless action
@@ -37,9 +38,19 @@ def validate_size!
           render_404 unless ::DesignManagement::DESIGN_IMAGE_SIZES.include?(size)
         end
 
+        def validate_sha!
+          render_404 if sha && version.blank?
+        end
+
         def size
           params[:id]
         end
+
+        def version
+          return if sha.blank?
+
+          @version ||= design.versions.find_by_sha(sha)
+        end
       end
     end
   end
diff --git a/spec/controllers/projects/design_management/designs/resized_image_controller_spec.rb b/spec/controllers/projects/design_management/designs/resized_image_controller_spec.rb
index cc0f4a426f421eb4952f294b49fccf8a1dd88cb9..5cc6e1b1bb49954a43cfb68f8a2c230681fa2f87 100644
--- a/spec/controllers/projects/design_management/designs/resized_image_controller_spec.rb
+++ b/spec/controllers/projects/design_management/designs/resized_image_controller_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe Projects::DesignManagement::Designs::ResizedImageController do
+RSpec.describe Projects::DesignManagement::Designs::ResizedImageController, feature_category: :design_management do
   include DesignManagementTestHelpers
 
   let_it_be(:project) { create(:project, :private) }
@@ -19,7 +19,7 @@
   end
 
   describe 'GET #show' do
-    subject do
+    subject(:response) do
       get(:show,
         params: {
           namespace_id: project.namespace,
@@ -27,12 +27,12 @@
           design_id: design_id,
           sha: sha,
           id: size
-      })
+        }
+      )
     end
 
     before do
       sign_in(viewer)
-      subject
     end
 
     context 'when the user does not have permission' do
@@ -68,8 +68,6 @@
       let(:design_id) { 'foo' }
 
       specify do
-        subject
-
         expect(response).to have_gitlab_http_status(:not_found)
       end
     end
@@ -136,6 +134,24 @@ def etag(action)
           expect(response).to have_gitlab_http_status(:not_found)
         end
       end
+
+      context 'when multiple design versions have the same sha hash' do
+        let(:sha) { newest_version.sha }
+
+        before do
+          create(:design, :with_smaller_image_versions,
+                 issue: create(:issue, project: project),
+                 versions_count: 1,
+                 versions_sha: sha)
+        end
+
+        it 'serves the newest image' do
+          action = newest_version.actions.first
+
+          expect(response.header['ETag']).to eq(etag(action))
+          expect(response).to have_gitlab_http_status(:ok)
+        end
+      end
     end
 
     context 'when design does not have a smaller image size available' do
diff --git a/spec/factories/design_management/designs.rb b/spec/factories/design_management/designs.rb
index 3d95c754a96c16380c8ff2b4767e55f185536ea2..d16fd0c297b58f305da22dea360a85e037e444e7 100644
--- a/spec/factories/design_management/designs.rb
+++ b/spec/factories/design_management/designs.rb
@@ -100,8 +100,9 @@
     trait :with_file do
       transient do
         deleted { false }
-        versions_count { 1 }
         file { File.join(Rails.root, 'spec/fixtures/dk.png') }
+        versions_count { 1 }
+        versions_sha { nil }
       end
 
       after :create do |design, evaluator|
@@ -109,6 +110,8 @@
         repository = project.design_repository
 
         commit_version = ->(action) do
+          return evaluator.versions_sha if evaluator.versions_sha
+
           repository.commit_files(
             evaluator.author,
             branch_name: 'master',