diff --git a/app/assets/javascripts/compare.js.coffee b/app/assets/javascripts/compare.js.coffee
index 8b502c8f27af52652bc77e91bd9b1efdb634b84e..762fedba408ffb1c18484f032ae9ae1dd0dcc742 100644
--- a/app/assets/javascripts/compare.js.coffee
+++ b/app/assets/javascripts/compare.js.coffee
@@ -30,34 +30,40 @@ class @Compare
     @getTargetHtml()
 
   getTargetProject: ->
+    $.ajax(
+      url: @opts.targetProjectUrl
+      data:
+        target_project_id:  $("input[name='merge_request[target_project_id]']").val()
+      beforeSend: ->
+        $('.mr_target_commit').empty()
+      success: (html) ->
+        $('.js-target-branch-dropdown .dropdown-content').html html
+    )
     $.get @opts.targetProjectUrl,
-      target_project_id:  $("input[name='merge_request[source_project]']").val()
+      target_project_id:  $("input[name='merge_request[target_project_id]']").val()
 
   getSourceHtml: ->
-    $.ajax(
-      url: @opts.sourceBranchUrl
-      data:
-        ref: $("input[name='merge_request[source_branch]']").val()
-      beforeSend: =>
-        @source_loading.show()
-        $(".mr_source_commit").html ""
-      success: (html) =>
-        @source_loading.hide()
-        $(".mr_source_commit").html html
-        $(".mr_source_commit .js-timeago").timeago()
+    @sendAjax(@opts.sourceBranchUrl, @source_loading, '.mr_source_commit',
+      ref: $("input[name='merge_request[source_branch]']").val()
     )
 
   getTargetHtml: ->
+    @sendAjax(@opts.targetBranchUrl, @target_loading, '.mr_target_commit',
+      target_project_id: $("input[name='merge_request[target_project_id]']").val()
+      ref: $("input[name='merge_request[target_branch]']").val()
+    )
+
+  sendAjax: (url, loading, target, data) ->
+    $target = $(target)
+
     $.ajax(
-      url: @opts.targetBranchUrl
-      data:
-        target_project_id: $("input[name='merge_request[target_project_id]']").val()
-        ref: $("input[name='merge_request[target_branch]']").val()
-      beforeSend: =>
-        @target_loading.show()
-        $(".mr_target_commit").html ""
-      success: (html) =>
-        @target_loading.hide()
-        $(".mr_target_commit").html html
-        $(".mr_target_commit .js-timeago").timeago()
+      url: url
+      data: data
+      beforeSend: ->
+        loading.show()
+        $target.empty()
+      success: (html) ->
+        loading.hide()
+        $target.html html
+        $('.js-timeago', $target).timeago()
     )
diff --git a/app/assets/stylesheets/pages/commits.scss b/app/assets/stylesheets/pages/commits.scss
index ad8e97de3b3bbd2ca923b7cae12e426680043be4..6453c91d955069866bea7c0873c9f3fbc26e8306 100644
--- a/app/assets/stylesheets/pages/commits.scss
+++ b/app/assets/stylesheets/pages/commits.scss
@@ -89,6 +89,10 @@ li.commit {
       padding: 0;
       margin: 0;
     }
+
+    a {
+      color: $gl-dark-link-color;
+    }
   }
 
   .commit-row-info {
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index ca6cfc991431c0b8c3ba35ca1beaed2896707fcd..ae613f5e093c57d910b660f82f1ebd79a37ee204 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -220,9 +220,7 @@ class Projects::MergeRequestsController < Projects::ApplicationController
     @target_project = selected_target_project
     @target_branches = @target_project.repository.branch_names
 
-    respond_to do |format|
-      format.js
-    end
+    render layout: false
   end
 
   def ci_status
diff --git a/app/views/projects/merge_requests/_new_compare.html.haml b/app/views/projects/merge_requests/_new_compare.html.haml
index 84c2faff920f503731038e9073fb5c8c8a7552a1..35d8faf7a9ddadcb04d2d45ed35d44c48aec5b10 100644
--- a/app/views/projects/merge_requests/_new_compare.html.haml
+++ b/app/views/projects/merge_requests/_new_compare.html.haml
@@ -44,7 +44,7 @@
           - projects =  @project.forked_from_project.nil? ? [@project] : [@project, @project.forked_from_project]
           .merge-request-select.dropdown
             = f.hidden_field :target_project_id
-            = dropdown_toggle projects.first.path_with_namespace, { toggle: "dropdown", field_name: "#{f.object_name}[target_project_id]", disabled: @merge_request.persisted? }, { toggle_class: "js-compare-dropdown js-target-project" }
+            = dropdown_toggle f.object.target_project.path_with_namespace, { toggle: "dropdown", field_name: "#{f.object_name}[target_project_id]", disabled: @merge_request.persisted? }, { toggle_class: "js-compare-dropdown js-target-project" }
             .dropdown-menu.dropdown-menu-selectable
               = dropdown_title("Select target project")
               = dropdown_filter("Search projects")
@@ -56,8 +56,8 @@
                         = project.path_with_namespace
           .merge-request-select.dropdown
             = f.hidden_field :target_branch
-            = dropdown_toggle "Select target branch", { toggle: "dropdown", field_name: "#{f.object_name}[target_branch]" }, { toggle_class: "js-compare-dropdown js-target-branch" }
-            .dropdown-menu.dropdown-menu-selectable
+            = dropdown_toggle f.object.target_branch, { toggle: "dropdown", field_name: "#{f.object_name}[target_branch]" }, { toggle_class: "js-compare-dropdown js-target-branch" }
+            .dropdown-menu.dropdown-menu-selectable.js-target-branch-dropdown
               = dropdown_title("Select target branch")
               = dropdown_filter("Search branches")
               = dropdown_content do
diff --git a/app/views/projects/merge_requests/update_branches.html.haml b/app/views/projects/merge_requests/update_branches.html.haml
new file mode 100644
index 0000000000000000000000000000000000000000..1b93188a10c70a2683224bac1e0e4dcd8d14cec6
--- /dev/null
+++ b/app/views/projects/merge_requests/update_branches.html.haml
@@ -0,0 +1,5 @@
+%ul
+  - @target_branches.each do |branch|
+    %li
+      %a{ href: "#", class: "#{("is-active" if "a" == branch)}", data: { id: branch } }
+        = branch
diff --git a/app/views/projects/merge_requests/update_branches.js.haml b/app/views/projects/merge_requests/update_branches.js.haml
deleted file mode 100644
index ca21b3bc0deb365c4db2f3ecc72576c80cd5e4e4..0000000000000000000000000000000000000000
--- a/app/views/projects/merge_requests/update_branches.js.haml
+++ /dev/null
@@ -1,9 +0,0 @@
-:plain
-  $(".target_branch").html("#{escape_javascript(options_for_select(@target_branches))}");
-
-  $('select.target_branch').select2({
-    width: 'resolve',
-    dropdownAutoWidth: true
-  });
-
-  $(".mr_target_commit").html("");