diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index fcc6384e27cd043f99764913d940c9a7910947cd..3f0833303ab9839c8a5cb4541b47bfd0d8a41a04 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -70,7 +70,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
     @target_project = merge_request.target_project
     @source_project = merge_request.source_project
     @commits = @merge_request.compare_commits
-    @commit = @merge_request.compare_base_commit
+    @commit = @merge_request.compare_commits.last
     @diffs = @merge_request.compare_diffs
     @note_counts = Note.where(commit_id: @commits.map(&:id)).
       group(:commit_id).count
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index 686add63bbfd829b19e8232a0b326f0439b23613..83dafe9323366d3dfb9164dfed674512c4735a39 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -44,7 +44,7 @@ class MergeRequest < ActiveRecord::Base
 
   # Temporary fields to store compare vars
   # when creating new merge request
-  attr_accessor :can_be_created, :compare_failed, :compare_base_commit,
+  attr_accessor :can_be_created, :compare_failed,
     :compare_commits, :compare_diffs
 
   ActsAsTaggableOn.strict_case_match = true
diff --git a/app/models/repository.rb b/app/models/repository.rb
index 2ff70c248dc85cac0de2208e967baf7a543cc190..d9b0d1fbe222153ea470a54e4bba78210919684f 100644
--- a/app/models/repository.rb
+++ b/app/models/repository.rb
@@ -263,4 +263,20 @@ class Repository
       contributor
     end
   end
+
+  def blob_for_diff(commit, diff)
+    file = blob_at(commit.id, diff.new_path)
+
+    unless file
+      file = prev_blob_for_diff(commit, diff)
+    end
+
+    file
+  end
+
+  def prev_blob_for_diff(commit, diff)
+    if commit.parent_id
+      blob_at(commit.parent_id, diff.old_path)
+    end
+  end
 end
diff --git a/app/services/merge_requests/build_service.rb b/app/services/merge_requests/build_service.rb
index 466ed1c17603757a000cef1dff7c9b0770f38a25..81dd88873959bb4211b9dc226498992d990e71f2 100644
--- a/app/services/merge_requests/build_service.rb
+++ b/app/services/merge_requests/build_service.rb
@@ -34,7 +34,6 @@ module MergeRequests
       # If we have at least one commit to merge -> creation allowed
       if commits.present?
         merge_request.compare_commits = Commit.decorate(commits)
-        merge_request.compare_base_commit = Commit.new(commits.first)
         merge_request.can_be_created = true
         merge_request.compare_failed = false
 
diff --git a/app/views/projects/commits/_diff_file.html.haml b/app/views/projects/commits/_diff_file.html.haml
index 45d1cd9c9a0981d9d04065528b6097c3a8d056fc..9cbcb84aead8b4e393e2984b89e43ed1d5b6c19b 100644
--- a/app/views/projects/commits/_diff_file.html.haml
+++ b/app/views/projects/commits/_diff_file.html.haml
@@ -1,5 +1,4 @@
-- file = project.repository.blob_at(@commit.id, diff.new_path)
-- file = project.repository.blob_at(@commit.parent_id, diff.old_path) unless file
+- file = project.repository.blob_for_diff(@commit, diff)
 - return unless file
 .diff-file{id: "diff-#{i}"}
   .diff-header{id: "file-path-#{hexdigest(diff.new_path || diff.old_path)}"}
@@ -41,7 +40,7 @@
       - else
         = render "projects/commits/text_file", diff: diff, index: i
     - elsif file.image?
-      - old_file = project.repository.blob_at(@commit.parent_id, diff.old_path) if @commit.parent_id
+      - old_file = project.repository.prev_blob_for_diff(@commit, diff)
       = render "projects/commits/image", diff: diff, old_file: old_file, file: file, index: i
     - else
       .nothing-here-block No preview for this file type