diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritCss.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritCss.java
index 6747aa1..2d631ef 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritCss.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/GerritCss.java
@@ -28,6 +28,7 @@
   String activeRow();
   String addReviewer();
   String removeReviewer();
+  String removeReviewerCell();
   String addSshKeyPanel();
   String approvalCategoryList();
   String approvalTable();
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ApprovalTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ApprovalTable.java
index ecfdb97..f367bef 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ApprovalTable.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ApprovalTable.java
@@ -15,6 +15,7 @@
 package com.google.gerrit.client.changes;
 
 import com.google.gerrit.client.ErrorDialog;
+import com.google.gerrit.client.FormatUtil;
 import com.google.gerrit.client.Gerrit;
 import com.google.gerrit.client.patches.PatchUtil;
 import com.google.gerrit.client.rpc.GerritCallback;
@@ -57,12 +58,11 @@
   private final Panel addReviewer;
   private final AddMemberBox addMemberBox;
   private Change.Id changeId;
-  private boolean changeIsOpen;
   private AccountInfoCache accountCache = AccountInfoCache.empty();
 
   public ApprovalTable() {
     types = Gerrit.getConfig().getApprovalTypes().getApprovalTypes();
-    table = new Grid(1, 4 + types.size());
+    table = new Grid(1, 3 + types.size());
     table.addStyleName(Gerrit.RESOURCES.css().infoTable());
     displayHeader();
 
@@ -96,35 +96,27 @@
   }
 
   private void displayHeader() {
+    final CellFormatter fmt = table.getCellFormatter();
     int col = 0;
-    header(col++, Util.C.approvalTableReviewer());
-    header(col++, "");
+
+    table.setText(0, col, Util.C.approvalTableReviewer());
+    fmt.setStyleName(0, col, Gerrit.RESOURCES.css().header());
+    col++;
+
+    table.clearCell(0, col);
+    fmt.setStyleName(0, col, Gerrit.RESOURCES.css().header());
+    col++;
 
     for (final ApprovalType t : types) {
-      header(col++, t.getCategory().getName());
+      table.setText(0, col, t.getCategory().getName());
+      fmt.setStyleName(0, col, Gerrit.RESOURCES.css().header());
+      col++;
     }
-    header(col++, Util.C.removeReviewer());
-    applyEdgeStyles(0);
-  }
 
-  private void header(final int col, final String title) {
-    table.setText(0, col, title);
-    table.getCellFormatter().addStyleName(0, col, Gerrit.RESOURCES.css().header());
-  }
-
-  private void applyEdgeStyles(final int row) {
-    final CellFormatter fmt = table.getCellFormatter();
-    fmt.addStyleName(row, 1, Gerrit.RESOURCES.css().approvalrole());
-    fmt.addStyleName(row, 1 + types.size(), Gerrit.RESOURCES.css().rightmost());
-    fmt.addStyleName(row, 2 + types.size(), Gerrit.RESOURCES.css().rightmost());
-    fmt.addStyleName(row, 3 + types.size(), Gerrit.RESOURCES.css().approvalhint());
-  }
-
-  private void applyScoreStyles(final int row) {
-    final CellFormatter fmt = table.getCellFormatter();
-    for (int col = 0; col < types.size(); col++) {
-      fmt.addStyleName(row, 2 + col, Gerrit.RESOURCES.css().approvalscore());
-    }
+    table.clearCell(0, col);
+    fmt.setStyleName(0, col, Gerrit.RESOURCES.css().header());
+    fmt.addStyleName(0, col, Gerrit.RESOURCES.css().rightmost());
+    col++;
   }
 
   public void setAccountInfoCache(final AccountInfoCache aic) {
@@ -140,22 +132,14 @@
       final List<ApprovalDetail> rows) {
     changeId = change.getId();
 
-    final int oldcnt = table.getRowCount();
-    table.resizeRows(1 + rows.size());
-    if (oldcnt < 1 + rows.size()) {
-      for (int row = oldcnt; row < 1 + rows.size(); row++) {
-        applyEdgeStyles(row);
-        applyScoreStyles(row);
-      }
-    }
-
     if (rows.isEmpty()) {
       table.setVisible(false);
     } else {
-      table.setVisible(true);
+      table.resizeRows(1 + rows.size());
       for (int i = 0; i < rows.size(); i++) {
         displayRow(i + 1, rows.get(i), change);
       }
+      table.setVisible(true);
     }
 
     final Element missingList = missing.getElement();
@@ -177,8 +161,7 @@
       }
     }
 
-    changeIsOpen = change.getStatus().isOpen();
-    addReviewer.setVisible(Gerrit.isSignedIn() && changeIsOpen);
+    addReviewer.setVisible(Gerrit.isSignedIn() && change.getStatus().isOpen());
   }
 
   private void doAddReviewer() {
@@ -241,10 +224,29 @@
     final Map<ApprovalCategory.Id, PatchSetApproval> am = ad.getApprovalMap();
     final StringBuilder hint = new StringBuilder();
     int col = 0;
+
     table.setWidget(row, col++, link(ad.getAccount()));
-    table.clearCell(row, col++); // TODO populate the account role
+
+    if (ad.canRemove()) {
+      Button remove = new Button("X");
+      remove.setTitle(Util.M.removeReviewer( //
+          FormatUtil.name(accountCache.get(ad.getAccount()))));
+      remove.setStyleName(Gerrit.RESOURCES.css().removeReviewer());
+      remove.addClickHandler(new ClickHandler() {
+        @Override
+        public void onClick(ClickEvent event) {
+          doRemove(ad);
+        }
+      });
+      table.setWidget(row, col, remove);
+    } else {
+      table.clearCell(row, col);
+    }
+    fmt.setStyleName(row, col++, Gerrit.RESOURCES.css().removeReviewerCell());
 
     for (final ApprovalType type : types) {
+      fmt.setStyleName(row, col, Gerrit.RESOURCES.css().approvalscore());
+
       final PatchSetApproval ca = am.get(type.getCategory().getId());
       if (ca == null || ca.getValue() == 0) {
         table.clearCell(row, col);
@@ -270,11 +272,9 @@
         String vstr = String.valueOf(ca.getValue());
         if (ca.getValue() > 0) {
           vstr = "+" + vstr;
-          fmt.removeStyleName(row, col, Gerrit.RESOURCES.css().negscore());
           fmt.addStyleName(row, col, Gerrit.RESOURCES.css().posscore());
         } else {
           fmt.addStyleName(row, col, Gerrit.RESOURCES.css().negscore());
-          fmt.removeStyleName(row, col, Gerrit.RESOURCES.css().posscore());
         }
         table.setText(row, col, vstr);
       }
@@ -282,30 +282,24 @@
       col++;
     }
 
-    if (ad.canRemove()) {
-      Button removeButton = new Button("X");
-      removeButton.setStyleName(Gerrit.RESOURCES.css().removeReviewer());
-      removeButton.addClickHandler(new ClickHandler() {
-        @Override
-        public void onClick(ClickEvent event) {
-          PatchUtil.DETAIL_SVC.removeReviewer(changeId, ad.getAccount(),
-              new GerritCallback<ReviewerResult>() {
-                @Override
-                public void onSuccess(ReviewerResult result) {
-                  if (result.getErrors().isEmpty()) {
-                    final ChangeDetail r = result.getChange();
-                    display(r.getChange(), r.getMissingApprovals(), r.getApprovals());
-                  } else {
-                    new ErrorDialog(result.getErrors().get(0).toString()).center();
-                  }
-                }
-          });
-        }
-      });
-      table.setWidget(row, col++, removeButton);
-    } else {
-      table.setText(row, col++, "");
-    }
-    table.setText(row, col++, hint.toString());
+    table.setText(row, col, hint.toString());
+    fmt.setStyleName(row, col, Gerrit.RESOURCES.css().rightmost());
+    fmt.addStyleName(row, col, Gerrit.RESOURCES.css().approvalhint());
+    col++;
+  }
+
+  private void doRemove(final ApprovalDetail ad) {
+    PatchUtil.DETAIL_SVC.removeReviewer(changeId, ad.getAccount(),
+        new GerritCallback<ReviewerResult>() {
+          @Override
+          public void onSuccess(ReviewerResult result) {
+            if (result.getErrors().isEmpty()) {
+              final ChangeDetail r = result.getChange();
+              display(r.getChange(), r.getMissingApprovals(), r.getApprovals());
+            } else {
+              new ErrorDialog(result.getErrors().get(0).toString()).center();
+            }
+          }
+        });
   }
 }
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java
index db4989b..e79d1a2 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.java
@@ -69,7 +69,6 @@
   String changeScreenComments();
 
   String approvalTableReviewer();
-  String removeReviewer();
   String approvalTableAddReviewer();
 
   String changeInfoBlockOwner();
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties
index 3a0c5bc..7c4c986 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeConstants.properties
@@ -46,7 +46,6 @@
 changeScreenComments = Comments
 
 approvalTableReviewer = Reviewer
-removeReviewer = Remove
 approvalTableAddReviewer = Add Reviewer
 
 changeInfoBlockOwner = Owner
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeMessages.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeMessages.java
index 6dab540..51e2bc5 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeMessages.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeMessages.java
@@ -32,6 +32,7 @@
   String patchTableComments(@PluralCount int count);
   String patchTableDrafts(@PluralCount int count);
 
+  String removeReviewer(String fullName);
   String messageWrittenOn(String date);
 
   String renamedFrom(String sourcePath);
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeMessages.properties b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeMessages.properties
index e25e9fa..5d2d3a5 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeMessages.properties
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/ChangeMessages.properties
@@ -13,6 +13,7 @@
 patchTableComments = {0} comments
 patchTableDrafts = {0} drafts
 
+removeReviewer = Remove reviewer {0}
 messageWrittenOn = on {0}
 
 renamedFrom = renamed from {0}
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/gerrit.css b/gerrit-gwtui/src/main/java/com/google/gerrit/client/gerrit.css
index ca4a588..08d5b82 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/gerrit.css
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/gerrit.css
@@ -782,9 +782,7 @@
 
 .infoTable td.approvalhint {
   white-space: nowrap;
-  background-left: 1px none;
-  background-bottom: 1px none;
-  border: none;
+  text-align: left;
   color: #444444;
 }
 
@@ -882,7 +880,12 @@
   white-space: nowrap;
 }
 .removeReviewer {
-  width: 30px;
+  padding: 0px;
+  font-size: 6pt;
+}
+td.removeReviewerCell {
+  padding-left: 4em;
+  border-left: none;
 }
 td.downloadLinkListCell {
   padding: 0px;
