diff --git a/lib/gitlab/diff/file.rb b/lib/gitlab/diff/file.rb
index ff8765b8e269be09d138526a2002ad28676f37c2..69b38a32eebb20326b2843d9c5adfb51d51a5c4a 100644
--- a/lib/gitlab/diff/file.rb
+++ b/lib/gitlab/diff/file.rb
@@ -16,7 +16,7 @@ module Gitlab
       end
 
       def highlighted_diff_lines
-        Gitlab::Diff::Highlight.process_diff_lines(self)
+        Gitlab::Diff::Highlight.process_diff_lines(new_path, diff_lines)
       end
 
       def mode_changed?
diff --git a/lib/gitlab/diff/highlight.rb b/lib/gitlab/diff/highlight.rb
index d0c2e3670c6cf574b34485cd636707dc06cfac5f..40a54ede2bb62a73ea1d89ca351167193f37d7c7 100644
--- a/lib/gitlab/diff/highlight.rb
+++ b/lib/gitlab/diff/highlight.rb
@@ -1,15 +1,15 @@
 module Gitlab
   module Diff
     class Highlight
-      def self.process_diff_lines(diff_file)
-        processor = new(diff_file)
+      def self.process_diff_lines(file_name, diff_lines)
+        processor = new(file_name, diff_lines)
         processor.highlight
       end
 
-      def initialize(diff_file)
-        text_lines          = diff_file.diff_lines.map(&:text)
-        @diff_file          = diff_file
-        @diff_lines         = diff_file.diff_lines
+      def initialize(file_name, diff_lines)
+        text_lines          = diff_lines.map(&:text)
+        @file_name          = file_name
+        @diff_lines         = diff_lines
         @diff_line_prefixes = text_lines.map { |line| line.sub!(/\A((\+|\-)\s*)/, '');$1 }
         @raw_lines          = text_lines.join("\n")
       end
@@ -32,7 +32,7 @@ module Gitlab
       end
 
       def lexer
-        parent = Rouge::Lexer.guess(filename: @diff_file.new_path, source: @code).new rescue Rouge::Lexers::PlainText.new
+        parent = Rouge::Lexer.guess(filename: @file_name, source: @code).new rescue Rouge::Lexers::PlainText.new
         Rouge::Lexers::GitlabDiff.new(parent_lexer: parent)
       end
 
@@ -43,7 +43,7 @@ module Gitlab
       end
 
       def formatter
-        @formatter ||= Rouge::Formatters::HTMLGitlab.new(
+        Rouge::Formatters::HTMLGitlab.new(
           nowrap: true,
           cssclass: 'code highlight',
           lineanchors: true,
diff --git a/lib/rouge/lexers/gitlab_diff.rb b/lib/rouge/lexers/gitlab_diff.rb
index d91dd6c424513c1899088603d367fe9a1ad3f042..cbf272ee1de24882ea85938ad80bbd722f3eef60 100644
--- a/lib/rouge/lexers/gitlab_diff.rb
+++ b/lib/rouge/lexers/gitlab_diff.rb
@@ -2,6 +2,8 @@ Rouge::Token::Tokens.token(:InlineDiff, 'idiff')
 
 module Rouge
   module Lexers
+    # This new Lexer is required in order to avoid the inline diff markup
+    # to be tokenized, it will be rendered as raw HTML code if that happens.
     class GitlabDiff < RegexLexer
       title "GitLab Diff"
       tag 'gitlab_diff'
diff --git a/spec/lib/gitlab/diff/highlight_spec.rb b/spec/lib/gitlab/diff/highlight_spec.rb
index 2a827a08dba045c61b6b716ef1158c07a77617af..80083c15cff96cb3225401e12b58ffe267a12e6f 100644
--- a/spec/lib/gitlab/diff/highlight_spec.rb
+++ b/spec/lib/gitlab/diff/highlight_spec.rb
@@ -9,7 +9,7 @@ describe Gitlab::Diff::Highlight, lib: true do
   let(:diff_file) { Gitlab::Diff::File.new(diff) }
 
   describe '.process_diff_lines' do
-    let(:diff_lines) { Gitlab::Diff::Highlight.process_diff_lines(diff_file) }
+    let(:diff_lines) { Gitlab::Diff::Highlight.process_diff_lines(diff_file.new_path, diff_file.diff_lines) }
 
     it 'should return Gitlab::Diff::Line elements' do
       expect(diff_lines.first).to be_an_instance_of(Gitlab::Diff::Line)