diff --git a/reviewboard/static/rb/js/ui/views/dialogView.es6.js b/reviewboard/static/rb/js/ui/views/dialogView.es6.js
index 0b6ca7c4aea353d22e330c824a6262ce1ae69b70..9f85f4b7d86a3aef177dbefc68f1922acb1f1850 100644
--- a/reviewboard/static/rb/js/ui/views/dialogView.es6.js
+++ b/reviewboard/static/rb/js/ui/views/dialogView.es6.js
@@ -183,37 +183,42 @@ RB.DialogView = Backbone.View.extend({
     _makeButtons() {
         this.$buttonsMap = {};
         this.$buttonsList = this.buttons.map(buttonInfo => {
-            const $button = $('<input type="button">')
-                .val(buttonInfo.label)
-                .attr('id', buttonInfo.id);
+            const buttonAttrs = {
+                id: buttonInfo.id,
+            };
 
             if (buttonInfo.class) {
-                $button.addClass(buttonInfo.class);
+                buttonAttrs.class = buttonInfo.class;
             }
 
             if (buttonInfo.disabled) {
-                $button.attr('disabled', true);
+                buttonAttrs.disabled = true;
             }
 
             if (buttonInfo.primary) {
-                $button.addClass('primary');
-                this._$primaryButton = $button;
-            }
-
-            if (buttonInfo.danger) {
-                $button.addClass('danger');
+                buttonAttrs.type = 'primary';
+            } else if (buttonInfo.danger) {
+                buttonAttrs.type = 'danger';
             }
 
             if (buttonInfo.onClick) {
-                if (_.isFunction(buttonInfo.onClick)) {
-                    $button.click(buttonInfo.onClick);
-                } else {
-                    $button.click(this[buttonInfo.onClick].bind(this));
-                }
+                buttonAttrs.onClick =
+                    _.isFunction(buttonInfo.onClick)
+                    ? buttonInfo.onClick
+                    : this[buttonInfo.onClick].bind(this);
             }
 
+            const $button = $(Ink.paintComponent(
+                'Ink.Button',
+                buttonAttrs,
+                buttonInfo.label));
+
             this.$buttonsMap[buttonInfo.id] = $button;
 
+            if (buttonInfo.primary) {
+                this._$primaryButton = $button;
+            }
+
             return $button;
         });
     },
diff --git a/reviewboard/static/rb/js/ui/views/tests/dialogViewTests.es6.js b/reviewboard/static/rb/js/ui/views/tests/dialogViewTests.es6.js
index 0d62a9408a4eb75917f4e470f55cc4736a7a8a05..bd89868d7b6f121eed05f9aa821f27d1b127d8d4 100644
--- a/reviewboard/static/rb/js/ui/views/tests/dialogViewTests.es6.js
+++ b/reviewboard/static/rb/js/ui/views/tests/dialogViewTests.es6.js
@@ -16,11 +16,11 @@ suite('rb/ui/views/DialogView', function() {
                 const button = buttons.testid;
 
                 expect(Object.keys(buttons).length).toBe(1);
-                expect(button.val()).toBe('Test');
+                expect(button.text()).toBe('Test');
                 expect(button.prop('id')).toBe('testid');
                 expect(button.prop('disabled')).toBe(false);
-                expect(button.hasClass('primary')).toBe(false);
-                expect(button.hasClass('danger')).toBe(false);
+                expect(button.hasClass('-is-primary')).toBe(false);
+                expect(button.hasClass('-is-danger')).toBe(false);
             });
 
             it('Primary', function() {
@@ -39,11 +39,11 @@ suite('rb/ui/views/DialogView', function() {
                 const button = buttons.testid;
 
                 expect(Object.keys(buttons).length).toBe(1);
-                expect(button.val()).toBe('Test');
+                expect(button.text()).toBe('Test');
                 expect(button.prop('id')).toBe('testid');
                 expect(button.prop('disabled')).toBe(false);
-                expect(button.hasClass('primary')).toBe(true);
-                expect(button.hasClass('danger')).toBe(false);
+                expect(button.hasClass('-is-primary')).toBe(true);
+                expect(button.hasClass('-is-danger')).toBe(false);
             });
 
             it('Disabled', function() {
@@ -62,11 +62,11 @@ suite('rb/ui/views/DialogView', function() {
                 const button = buttons.testid;
 
                 expect(Object.keys(buttons).length).toBe(1);
-                expect(button.val()).toBe('Test');
+                expect(button.text()).toBe('Test');
                 expect(button.prop('id')).toBe('testid');
                 expect(button.prop('disabled')).toBe(true);
-                expect(button.hasClass('primary')).toBe(false);
-                expect(button.hasClass('danger')).toBe(false);
+                expect(button.hasClass('-is-primary')).toBe(false);
+                expect(button.hasClass('-is-danger')).toBe(false);
             });
 
             it('Danger', function() {
@@ -85,11 +85,11 @@ suite('rb/ui/views/DialogView', function() {
                 const button = buttons.testid;
 
                 expect(Object.keys(buttons).length).toBe(1);
-                expect(button.val()).toBe('Test');
+                expect(button.text()).toBe('Test');
                 expect(button.prop('id')).toBe('testid');
                 expect(button.prop('disabled')).toBe(false);
-                expect(button.hasClass('primary')).toBe(false);
-                expect(button.hasClass('danger')).toBe(true);
+                expect(button.hasClass('-is-primary')).toBe(false);
+                expect(button.hasClass('-is-danger')).toBe(true);
             });
         });
 
@@ -112,7 +112,7 @@ suite('rb/ui/views/DialogView', function() {
                     const button = buttons.testid;
 
                     expect(Object.keys(buttons).length).toBe(1);
-                    expect(button.val()).toBe('Test');
+                    expect(button.text()).toBe('Test');
                     button.click();
                     expect(myFunc).toHaveBeenCalled();
                 });
@@ -136,7 +136,7 @@ suite('rb/ui/views/DialogView', function() {
                     const button = buttons.testid;
 
                     expect(Object.keys(buttons).length).toBe(1);
-                    expect(button.val()).toBe('Test');
+                    expect(button.text()).toBe('Test');
                     button.click();
                     expect(dialogView._onClicked).toHaveBeenCalled();
                 });
@@ -157,7 +157,7 @@ suite('rb/ui/views/DialogView', function() {
 
                         const buttons = dialogView.$buttonsMap;
                         expect(Object.keys(buttons).length).toBe(1);
-                        expect(buttons.testid.val()).toBe('Test');
+                        expect(buttons.testid.text()).toBe('Test');
 
                         dialogView.$el.trigger(
                             $.Event('keydown', { which: $.ui.keyCode.ESCAPE }));
@@ -193,9 +193,9 @@ suite('rb/ui/views/DialogView', function() {
                         const form = dialogView.$el.find('form');
 
                         expect(Object.keys(buttons).length).toBe(1);
-                        expect(button.val()).toBe('Test');
+                        expect(button.text()).toBe('Test');
                         expect(button.prop('disabled')).toBe(false);
-                        expect(button.hasClass('primary')).toBe(true);
+                        expect(button.hasClass('-is-primary')).toBe(true);
 
                         form.trigger($.Event('submit'));
                         expect(myFunc).toHaveBeenCalled();
@@ -227,9 +227,9 @@ suite('rb/ui/views/DialogView', function() {
                         const form = dialogView.$el.find('form');
 
                         expect(Object.keys(buttons).length).toBe(1);
-                        expect(button.val()).toBe('Test')
+                        expect(button.text()).toBe('Test');
                         expect(button.prop('disabled')).toBe(true);
-                        expect(button.hasClass('primary')).toBe(true);
+                        expect(button.hasClass('-is-primary')).toBe(true);
 
                         form.trigger($.Event('submit'));
                         expect(myFunc).not.toHaveBeenCalled();
@@ -264,9 +264,9 @@ suite('rb/ui/views/DialogView', function() {
                         form.submit(myFunc2);
 
                         expect(Object.keys(buttons).length).toBe(1);
-                        expect(button.val()).toBe('Test');
+                        expect(button.text()).toBe('Test');
                         expect(button.prop('disabled')).toBe(false);
-                        expect(button.hasClass('primary')).toBe(true);
+                        expect(button.hasClass('-is-primary')).toBe(true);
 
                         form.trigger($.Event('submit'));
                         expect(myFunc1).not.toHaveBeenCalled();
