diff --git a/reviewboard/reviews/templatetags/reviewtags.py b/reviewboard/reviews/templatetags/reviewtags.py
index 7ed509a5e24456b1abcfc46802342ad796a20965..9797b18aaad6ccca63b0c9417ffcb3d7f03d2ddb 100644
--- a/reviewboard/reviews/templatetags/reviewtags.py
+++ b/reviewboard/reviews/templatetags/reviewtags.py
@@ -132,7 +132,8 @@ def file_attachment_comments(context, file_attachment):
 
 @register.tag
 @basictag(takes_context=True)
-def reply_list(context, entry, comment, context_type, context_id):
+def reply_list(context, entry, comment, context_type, context_id,
+               last_visited):
     """
     Renders a list of comments of a specified type.
 
@@ -165,6 +166,7 @@ def reply_list(context, entry, comment, context_type, context_id):
             'draft': not reply.public,
             'comment_id': comment_id,
             'rich_text': rich_text,
+            'last_visited': last_visited,
         })
 
         result = render_to_string('reviews/review_reply.html', context)
@@ -245,6 +247,7 @@ def reply_section(context, entry, comment, context_type, context_id):
         'user': context.get('user', None),
         'local_site_name': context.get('local_site_name'),
         'request': context['request'],
+        'last_visited': context['last_visited'],
     }
 
 
diff --git a/reviewboard/reviews/views.py b/reviewboard/reviews/views.py
index 04289907e29bae3486b599707b1cf867198d37d5..f44d78b63921a719f8333836232d5b694f9a050f 100644
--- a/reviewboard/reviews/views.py
+++ b/reviewboard/reviews/views.py
@@ -14,7 +14,7 @@ from django.http import (Http404,
                          HttpResponseNotFound,
                          HttpResponseNotModified,
                          HttpResponseRedirect)
-from django.shortcuts import (get_object_or_404, get_list_or_404, render,
+from django.shortcuts import (get_object_or_404, get_list_or_404,
                               render_to_response)
 from django.template.context import RequestContext
 from django.template.loader import render_to_string
@@ -759,6 +759,7 @@ def review_detail(request,
         'file_attachments': latest_file_attachments,
         'all_file_attachments': file_attachments,
         'screenshots': screenshots,
+        'last_visited': last_visited,
     })
 
     response = render_to_response(template_name,
diff --git a/reviewboard/static/rb/css/pages/reviews.less b/reviewboard/static/rb/css/pages/reviews.less
index e41972b61b9594a7b0585309681d69313890da2d..4b4d2f5393f73f286864dd3ab0386c1df70316b1 100644
--- a/reviewboard/static/rb/css/pages/reviews.less
+++ b/reviewboard/static/rb/css/pages/reviews.less
@@ -39,6 +39,15 @@
           font-weight: bold;
           text-decoration: none;
         }
+
+        .new-reply {
+          width: 0;
+          height: 0;
+          border: 6px solid rgb(41, 92, 202);
+          border-radius: 6px;
+          float: left;
+          margin-right: 4px;
+        }
       }
 
       span {
@@ -626,6 +635,14 @@
     .body_top, .body_bottom {
       margin: 0;
     }
+
+    .new-background {
+      background-color:rgba(250, 229, 68, 0.52) !important;
+       box-shadow:
+        inset 0 1px 0 rgba(255,255,255,0.5),
+        0 2px 2px rgba(0,0,0,0.3),
+        0 0 4px 1px rgba(0,0,0,0.2);
+    }
   }
 
   .box-inner {
@@ -736,6 +753,16 @@
       color: black;
       text-decoration: none;
     }
+
+    .new-reply {
+      width: 0;
+      height: 0;
+      border: 6px solid rgb(41, 92, 202);
+      border-radius: 6px;
+      float: left;
+      margin-right: 4px;
+      margin-top: 2px;
+    }
   }
 
   .reviewer {
@@ -763,7 +790,7 @@
       .review-comments-inline();
 
       dl {
-        border-left: 2px #D0D0D0 solid;
+        border-left: 3px #D0D0D0 solid;
 
         /*
          * Set a border-bottom to prevent a bug in IE where, without a
diff --git a/reviewboard/templates/reviews/boxes/review.html b/reviewboard/templates/reviews/boxes/review.html
index 0008e2962a1b7129fb6358b04b7dfd42d6bb634b..7cc0117d317f5d29af641c1eecc5419e870ece90 100644
--- a/reviewboard/templates/reviews/boxes/review.html
+++ b/reviewboard/templates/reviews/boxes/review.html
@@ -19,6 +19,7 @@
 {%   endif %}
 {%  endif %}
    <div class="collapse-button btn"><div class="rb-icon {% if entry.collapsed %}rb-icon-expand-review{% else %}rb-icon-collapse-review{% endif %}"></div></div>
+{%  if last_visited < entry.review.timestamp %} <div class="new-reply"></div> {% endif %}
    <div class="reviewer"><a href="{% url 'user' entry.review.user %}" class="user">{{entry.review.user|user_displayname}}</a></div>
    <div class="posted_time">{% localtime on %}{% blocktrans with entry.review.timestamp as timestamp and entry.review.timestamp|date:"c" as timestamp_raw %}Posted <time class="timesince" datetime="{{timestamp_raw}}">{{timestamp}}</time> ({{timestamp}}){% endblocktrans %}{% endlocaltime %}</div>
 {%  template_hook_point "review-summary-header-post" %}
diff --git a/reviewboard/templates/reviews/review_reply.html b/reviewboard/templates/reviews/review_reply.html
index 7ea381206dfc908db813ef9dc7568833124a84ee..f55682b23d7bca87bfc6bab082dc4c7a438bba9e 100644
--- a/reviewboard/templates/reviews/review_reply.html
+++ b/reviewboard/templates/reviews/review_reply.html
@@ -1,9 +1,14 @@
 {% load djblets_utils i18n reviewtags tz %}
 
    <li{% if draft %} class="draft"{% endif %}{% if comment_id %} data-comment-id="{{comment_id}}"{% endif %}>
-    <dl>
+{% if last_visited < timestamp and last_visited > entry.review.timestamp %}
+        <dl class="new-background"> {% else %} <dl>
+{%  endif %}
      <dt>
       <label for="{% if draft %}draft{% endif %}comment_{{context_id}}-{{id}}">
+{% if last_visited < timestamp and last_visited > entry.review.timestamp %}
+      <div class="new-reply"> </div>
+{% endif %}
       <a href="{% url 'user' reply_user %}" class="user">{{reply_user|user_displayname}}</a>
       <span class="timestamp">{% localtime on %}{% blocktrans with timestamp as timestamp and timestamp|date:"c" as timestamp_raw %}<time class="timesince" datetime="{{timestamp_raw}}">{{timestamp}}</time> ({{timestamp}}){% endblocktrans %}{% endlocaltime %}</span>
       </label>
diff --git a/reviewboard/templates/reviews/review_reply_section.html b/reviewboard/templates/reviews/review_reply_section.html
index 49fc90530ee339d8249c35821013c1909d471fef..cb283e2422aa023064373d9d30a7ca9efe82efa3 100644
--- a/reviewboard/templates/reviews/review_reply_section.html
+++ b/reviewboard/templates/reviews/review_reply_section.html
@@ -3,7 +3,7 @@
   <div id="{{context_id}}-{{entry.review.id}}" class="comment-section" data-context-type="{{context_type}}"{% if comment %} data-context-id="{{comment.id}}"{% endif %}>
    <div class="issue-indicator"></div>
    <ol class="reply-comments">
-    {% reply_list entry comment context_type context_id %}
+    {% reply_list entry comment context_type context_id last_visited %}
    </ol>
 {% if user.is_authenticated %}
    <ul class="controls">
