diff --git a/reviewboard/static/rb/css/reviews.less b/reviewboard/static/rb/css/reviews.less
index 24781faf0aa4df796e6a2ec0b66948b7c294609c..dbbf45a4993d865d00dd9f3ea6f2b2c9155577d4 100644
--- a/reviewboard/static/rb/css/reviews.less
+++ b/reviewboard/static/rb/css/reviews.less
@@ -178,9 +178,17 @@
 }
 
 .markdown-info {
+  color: blue;
   font-size: 8pt;
   font-weight: normal;
   float: right;
+  line-height: 16px;
+  margin-right: 0.5em;
+  text-decoration: none;
+
+  &:hover {
+    text-decoration: underline;
+  }
 }
 
 .review-request {
diff --git a/reviewboard/static/rb/js/views/commentDialogView.js b/reviewboard/static/rb/js/views/commentDialogView.js
index 68cfd706e032e71fab2d0198dc94ef6866dbe223..9d9da2e530135fa14d8dfb861a9d287d5f0dc294 100644
--- a/reviewboard/static/rb/js/views/commentDialogView.js
+++ b/reviewboard/static/rb/js/views/commentDialogView.js
@@ -107,7 +107,13 @@ RB.CommentDialogView = Backbone.View.extend({
         ' <ul></ul>',
         '</div>',
         '<form method="post">',
-        ' <h1 class="title"><%- yourCommentText %></h1>',
+        ' <h1 class="title">',
+        '  <%- yourCommentText %>',
+        '<% if (authenticated && !hasDraft) { %>',
+        '  <a class="markdown-info" href="<%- markdownDocsURL %>"',
+        '     target="_blank"><%- markdownText %></a>',
+        '<% } %>',
+        ' </h1>',
         '<% if (!authenticated) { %>',
         ' <p class="login-text">',
         '  <%= loginText %>',
@@ -155,12 +161,16 @@ RB.CommentDialogView = Backbone.View.extend({
             .html(this.template({
                 authenticated: userSession.get('authenticated'),
                 hasDraft: reviewRequest.get('hasDraft'),
-                loginURL: userSession.get('loginURL'),
-                reviewRequestURL: this.options.reviewRequestURL,
+                markdownDocsURL: MANUAL_URL + 'users/markdown/',
+                markdownText: gettext('Markdown'),
                 otherReviewsText: gettext('Other reviews'),
                 yourCommentText: gettext('Your comment'),
-                loginText: gettext('You must <a href="<%= loginURL %>">log in</a> to post a comment.'),
-                draftWarning: gettext('The review request\'s current <a href="{{reviewRequestURL}}">draft</a> needs to be published before you can comment.'),
+                loginText: interpolate(
+                    gettext('You must <a href="%s">log in</a> to post a comment.'),
+                    [userSession.get('loginURL')]),
+                draftWarning: interpolate(
+                    gettext('The review request\'s current <a href="%s">draft</a> needs to be published before you can comment.'),
+                    [reviewRequest.get('reviewURL')]),
                 openAnIssueText: gettext('Open an <u>i</u>ssue'),
                 saveButton: gettext('Save'),
                 cancelButton: gettext('Cancel'),
@@ -317,13 +327,6 @@ RB.CommentDialogView = Backbone.View.extend({
             this._textEditor.focus();
         }
 
-        this.$('.comment-text-field').prev().append([
-            '<a class="markdown-info"',
-            'href="http://www.reviewboard.org/docs/manual/dev/users/markdown/"',
-            'target="_blank">',
-            gettext('This field supports Markdown'),
-            '</a>'].join(''));
-
         this.$el
             .css({
                 top: parseInt(this.$el.css("top"), 10) - this.SLIDE_DISTANCE,
diff --git a/reviewboard/static/rb/js/views/markdownEditorView.js b/reviewboard/static/rb/js/views/markdownEditorView.js
index a5e20cec167e22f66b3616476c96d8a816e66955..18e327b38719d3946034a24305a0e857b1f996f5 100644
--- a/reviewboard/static/rb/js/views/markdownEditorView.js
+++ b/reviewboard/static/rb/js/views/markdownEditorView.js
@@ -181,6 +181,15 @@ RB.MarkdownEditorView = Backbone.View.extend({
 
                 editor.element.on('beginEdit', function() {
                     markdownEditor._showEditor();
+
+                    editor.element.inlineEditor('buttons').append(
+                        $('<a/>')
+                            .addClass('markdown-info')
+                            .attr({
+                                href: MANUAL_URL + 'users/markdown/',
+                                target: '_blank'
+                            })
+                            .text(gettext('Markdown Reference')));
                 });
 
                 editor.element.on('cancel complete', function() {
diff --git a/reviewboard/static/rb/js/views/reviewDialogView.js b/reviewboard/static/rb/js/views/reviewDialogView.js
index ddb321ee5d49d24dfcdee9b6ff77023c10f1e41e..401d53f9ed45fdef50c270cdeed1ea0da50d223f 100644
--- a/reviewboard/static/rb/js/views/reviewDialogView.js
+++ b/reviewboard/static/rb/js/views/reviewDialogView.js
@@ -262,6 +262,8 @@ RB.ReviewDialogView = Backbone.View.extend({
 
     template: _.template([
         '<div class="edit-field">',
+        ' <a class="markdown-info" href="<%- markdownDocsURL %>"',
+        '    target="_blank"><%- markdownText %></a>',
         ' <input id="id_shipit" type="checkbox" />',
         ' <label for="id_shipit"><%- shipItText %></label>',
         '</div>',
@@ -361,7 +363,9 @@ RB.ReviewDialogView = Backbone.View.extend({
      */
     render: function() {
         this.$el.html(this.template({
-            shipItText: gettext('Ship It')
+            shipItText: gettext('Ship It'),
+            markdownDocsURL: MANUAL_URL + 'users/markdown/',
+            markdownText: gettext('Markdown Reference')
         }));
 
         this._$shipIt = this.$('#id_shipit');
@@ -534,12 +538,6 @@ RB.ReviewDialogView = Backbone.View.extend({
 
         /* Must be done after the dialog is rendered. */
         this._$buttons = this._$dlg.modalBox('buttons');
-        $('#id_shipit').after([
-            '<a class="markdown-info" ',
-            'href="http://www.reviewboard.org/docs/manual/dev/users/markdown/" ',
-            'target="_blank">',
-            gettext('These fields support Markdown'),
-            '</a> '].join(''));
         this._bodyTopEditor.focus();
     },
 
diff --git a/reviewboard/static/rb/js/views/reviewReplyEditorView.js b/reviewboard/static/rb/js/views/reviewReplyEditorView.js
index bf9a6fc43f5d3a25fca669039d6ee125c4b259ea..6e80da5f7ec8a2803d5ddfb01933172737a378b5 100644
--- a/reviewboard/static/rb/js/views/reviewReplyEditorView.js
+++ b/reviewboard/static/rb/js/views/reviewReplyEditorView.js
@@ -113,15 +113,6 @@ RB.ReviewReplyEditorView = Backbone.View.extend({
             }, RB.MarkdownEditorView.getInlineEditorOptions()))
             .on({
                 beginEdit: function() {
-                    $draftComment
-                        .find('pre.reviewtext')
-                        .inlineEditor('buttons')
-                        .append([
-                            '<a class="markdown-info" ',
-                            'href="http://www.reviewboard.org/docs/manual/dev/users/markdown/" ',
-                            'target="_blank">',
-                            gettext('This field supports Markdown'),
-                            '</a> '].join(''));
                     if (pageEditState) {
                         pageEditState.incr('editCount');
                     }
diff --git a/reviewboard/static/rb/js/views/reviewRequestEditorView.js b/reviewboard/static/rb/js/views/reviewRequestEditorView.js
index 9f4b09269eaf847bac4885d51a337ef787a6dcbf..3a367596be82de2621fc8736106ccf70346004bd 100644
--- a/reviewboard/static/rb/js/views/reviewRequestEditorView.js
+++ b/reviewboard/static/rb/js/views/reviewRequestEditorView.js
@@ -923,14 +923,6 @@ RB.ReviewRequestEditorView = Backbone.View.extend({
             .inlineEditor(options)
             .on({
                 beginEdit: function() {
-                    if (fieldOptions.editMarkdown) {
-                        $el.inlineEditor('buttons').append([
-                            '<a class="markdown-info" ',
-                            'href="http://www.reviewboard.org/docs/manual/dev/users/markdown/" ',
-                            'target="_blank">',
-                            gettext('This field supports Markdown'),
-                            '</a> '].join(''));
-                    }
                     model.incr('editCount');
                 },
                 cancel: _.bind(function() {
diff --git a/reviewboard/templates/base.html b/reviewboard/templates/base.html
index 5970ddbe49986ce6fa18fcb69a652cb72d8b9559..2915f5340705e4a2dd6088a59e4f682918c94c8e 100644
--- a/reviewboard/templates/base.html
+++ b/reviewboard/templates/base.html
@@ -12,6 +12,7 @@
   <script type="text/javascript">
     var AJAX_SERIAL = "{{AJAX_SERIAL}}",
         SITE_ROOT = "{{SITE_ROOT}}",
+        MANUAL_URL = 'http://www.reviewboard.org/docs/manual/dev/',
         STATIC_URLS = {
             'rb/images/favicon_notify.ico': '{% static "rb/images/favicon_notify.ico" %}',
             'rb/images/resize-grip.png': '{% static "rb/images/resize-grip.png" %}',
