diff --git a/plugins/poll/assets/javascripts/components/poll-results-standard.js.es6 b/plugins/poll/assets/javascripts/components/poll-results-standard.js.es6
index 4382fdea77e..f9b62769a5a 100644
--- a/plugins/poll/assets/javascripts/components/poll-results-standard.js.es6
+++ b/plugins/poll/assets/javascripts/components/poll-results-standard.js.es6
@@ -1,13 +1,21 @@
+import evenRound from "discourse/plugins/poll/lib/even-round";
+import computed from "ember-addons/ember-computed-decorators";
+
 export default Em.Component.extend({
   tagName: "ul",
   classNames: ["results"],
 
-  options: function() {
+  @computed("poll.voters", "poll.options.[]")
+  options() {
+    const options = this.get("poll.options");
     const voters = this.get("poll.voters");
+    const percentages = voters === 0 ?
+      Array(options.length).fill(0) :
+      evenRound(_.map(options, o => 100 * o.get("votes") / voters));
 
-    this.get("poll.options").forEach(option => {
-      const percentage = voters === 0 ? 0 : Math.floor(100 * option.get("votes") / voters),
-            style = "width: " + percentage + "%".htmlSafe();
+    options.forEach((option, i) => {
+      const percentage = percentages[i];
+      const style = new Ember.Handlebars.SafeString(`width: ${percentage}%`);
 
       option.setProperties({
         percentage,
@@ -17,6 +25,6 @@ export default Em.Component.extend({
     });
 
     return this.get("poll.options");
-  }.property("poll.voters", "poll.options.[]")
+  }
 
 });
diff --git a/plugins/poll/assets/javascripts/lib/even-round.js.es6 b/plugins/poll/assets/javascripts/lib/even-round.js.es6
new file mode 100644
index 00000000000..0a963aac66f
--- /dev/null
+++ b/plugins/poll/assets/javascripts/lib/even-round.js.es6
@@ -0,0 +1,8 @@
+// stolen from http://stackoverflow.com/a/13485888/11983
+export default (percentages) => {
+  const off = 100 - _.reduce(percentages, (acc, x) => acc + Math.round(x), 0);
+  return _.chain(percentages)
+          .sortBy(x => Math.round(x) - x)
+          .map((x, i) => Math.round(x) + (off > i) - (i >= (percentages.length + off)))
+          .value();
+};