diff --git a/reviewboard/webapi/resources/base_review.py b/reviewboard/webapi/resources/base_review.py
index 9554bb5ec38fd8dedc78f21b03dbdc785f4151ea..309310aef8727a25e74267d0257d107ec1783220 100644
--- a/reviewboard/webapi/resources/base_review.py
+++ b/reviewboard/webapi/resources/base_review.py
@@ -235,6 +235,9 @@ class BaseReviewResource(WebAPIResource):
             value = kwargs.get(field, None)
 
             if value is not None:
+                if isinstance(value, basestring):
+                    value = value.strip()
+
                 setattr(review, field, value)
 
         review.save()
diff --git a/reviewboard/webapi/resources/review_diff_comment.py b/reviewboard/webapi/resources/review_diff_comment.py
index f9de56e47f00d56c8dfe75b90f2c866e9726cc35..08d93a11f456aaf1831da82fddc244ca606b2e2b 100644
--- a/reviewboard/webapi/resources/review_diff_comment.py
+++ b/reviewboard/webapi/resources/review_diff_comment.py
@@ -118,7 +118,7 @@ class ReviewDiffCommentResource(BaseDiffCommentResource):
 
         new_comment = self.model(filediff=filediff,
                                  interfilediff=interfilediff,
-                                 text=text,
+                                 text=text.strip(),
                                  first_line=first_line,
                                  num_lines=num_lines,
                                  issue_opened=bool(issue_opened))
diff --git a/reviewboard/webapi/resources/review_file_attachment_comment.py b/reviewboard/webapi/resources/review_file_attachment_comment.py
index 7989a010a9085be5f0fd10e0f9c856567e409df6..fd3646c87141aff5e9d598ef09121c20a2c012cf 100644
--- a/reviewboard/webapi/resources/review_file_attachment_comment.py
+++ b/reviewboard/webapi/resources/review_file_attachment_comment.py
@@ -111,7 +111,7 @@ class ReviewFileAttachmentCommentResource(BaseFileAttachmentCommentResource):
         new_comment = self.model(
             file_attachment=file_attachment,
             diff_against_file_attachment=diff_against_file_attachment,
-            text=text,
+            text=text.strip(),
             issue_opened=bool(issue_opened))
 
         self._import_extra_data(new_comment.extra_data, extra_fields)
diff --git a/reviewboard/webapi/resources/review_reply.py b/reviewboard/webapi/resources/review_reply.py
index cfae2a06f77cdd1945e7a6ab7aed82b70daf0ea9..222d388acb79b6a355ce37da6d41e5bb0d9eaf70 100644
--- a/reviewboard/webapi/resources/review_reply.py
+++ b/reviewboard/webapi/resources/review_reply.py
@@ -218,7 +218,7 @@ class ReviewReplyResource(BaseReviewResource):
             value = kwargs.get(field, None)
 
             if value is not None:
-                setattr(reply, field, value)
+                setattr(reply, field, value.strip())
 
                 if value == '':
                     reply_to = None
diff --git a/reviewboard/webapi/resources/review_reply_diff_comment.py b/reviewboard/webapi/resources/review_reply_diff_comment.py
index 3b755afe6e1fcce80651fcdacf66120e6c294286..113faf17a964a56a78f2c7c3af9a79220e3b13cc 100644
--- a/reviewboard/webapi/resources/review_reply_diff_comment.py
+++ b/reviewboard/webapi/resources/review_reply_diff_comment.py
@@ -99,7 +99,7 @@ class ReviewReplyDiffCommentResource(BaseDiffCommentResource):
                                      num_lines=comment.num_lines)
             is_new = True
 
-        new_comment.text = text
+        new_comment.text = text.strip()
         new_comment.save()
 
         data = {
diff --git a/reviewboard/webapi/resources/review_reply_file_attachment_comment.py b/reviewboard/webapi/resources/review_reply_file_attachment_comment.py
index 300ab5617c9a3ed0be15622fc12520c9c66c7e25..adcbe23dd40ca06a2ea80b76ac64690b7cbf14ff 100644
--- a/reviewboard/webapi/resources/review_reply_file_attachment_comment.py
+++ b/reviewboard/webapi/resources/review_reply_file_attachment_comment.py
@@ -106,7 +106,7 @@ class ReviewReplyFileAttachmentCommentResource(
                                      reply_to=comment)
             is_new = True
 
-        new_comment.text = text
+        new_comment.text = text.strip()
         new_comment.save()
 
         data = {
diff --git a/reviewboard/webapi/resources/review_reply_screenshot_comment.py b/reviewboard/webapi/resources/review_reply_screenshot_comment.py
index 9fef73b084ae5153ffcc15f7f2ea32f333bfa2e2..966c0fd371b047574f9fc5737256746b9f2ed3d3 100644
--- a/reviewboard/webapi/resources/review_reply_screenshot_comment.py
+++ b/reviewboard/webapi/resources/review_reply_screenshot_comment.py
@@ -105,7 +105,7 @@ class ReviewReplyScreenshotCommentResource(BaseScreenshotCommentResource):
                                      h=comment.h)
             is_new = True
 
-        new_comment.text = text
+        new_comment.text = text.strip()
         new_comment.save()
 
         data = {
diff --git a/reviewboard/webapi/resources/review_screenshot_comment.py b/reviewboard/webapi/resources/review_screenshot_comment.py
index a1bb45a99b7b9a53ff05f7df9c543448879f696c..c294fad0a6e72c1465cbc2d406a1d8b1de70e184 100644
--- a/reviewboard/webapi/resources/review_screenshot_comment.py
+++ b/reviewboard/webapi/resources/review_screenshot_comment.py
@@ -94,7 +94,8 @@ class ReviewScreenshotCommentResource(BaseScreenshotCommentResource):
             }
 
         new_comment = self.model(screenshot=screenshot, x=x, y=y, w=w, h=h,
-                                 text=text, issue_opened=bool(issue_opened))
+                                 text=text.strip(),
+                                 issue_opened=bool(issue_opened))
 
         if issue_opened:
             new_comment.issue_status = BaseComment.OPEN
