diff --git a/core/includes/form.inc b/core/includes/form.inc
index 5634be8f92130e88b4e82c4b094b6f4788cf3796..059051b27301d22153bda58a83cf5d7dbc7c75d6 100644
--- a/core/includes/form.inc
+++ b/core/includes/form.inc
@@ -3939,9 +3939,9 @@ function theme_button($variables) {
   $element['#attributes']['type'] = 'submit';
   element_set_attributes($element, array('id', 'name', 'value'));
 
-  $element['#attributes']['class'][] = 'form-button';
+  $element['#attributes']['class'][] = 'button';
   if (!empty($element['#button_type'])) {
-    $element['#attributes']['class'][] = 'form-button-' . $element['#button_type'];
+    $element['#attributes']['class'][] = 'button-' . $element['#button_type'];
   }
   // @todo Various JavaScript depends on this button class.
   $element['#attributes']['class'][] = 'form-submit';
diff --git a/core/includes/menu.inc b/core/includes/menu.inc
index 2e553665f3d00839e681cd4380c265abc2476d99..4cd98551d0fe1403f8d0990b7f33eabbb630b57d 100644
--- a/core/includes/menu.inc
+++ b/core/includes/menu.inc
@@ -1659,7 +1659,7 @@ function theme_menu_local_action($variables) {
     'localized_options' => array(),
   );
   $link['localized_options']['attributes']['class'][] = 'button';
-  $link['localized_options']['attributes']['class'][] = 'add';
+  $link['localized_options']['attributes']['class'][] = 'button-action';
 
   $output = '<li>';
   $output .= l($link['title'], $link['href'], $link['localized_options']);
diff --git a/core/misc/dropbutton/dropbutton.base.css b/core/misc/dropbutton/dropbutton.base.css
index 65ef3147a2a1ed4dab92eb73189792f70020f533..3d0cfaf8ffde54d09985bad53d7ffd2532543593 100644
--- a/core/misc/dropbutton/dropbutton.base.css
+++ b/core/misc/dropbutton/dropbutton.base.css
@@ -74,9 +74,13 @@
   white-space: nowrap;
   width: 2em;
 }
-.dropbutton-toggle button {
+.dropbutton-toggle button,
+.dropbutton-toggle button:focus,
+.dropbutton-toggle button:hover,
+.dropbutton-toggle button:active {
   background: none;
   border: 0;
+  color: inherit;
   cursor: pointer;
   display: block;
   height: 100%;
diff --git a/core/modules/system/lib/Drupal/system/Tests/Form/ElementTest.php b/core/modules/system/lib/Drupal/system/Tests/Form/ElementTest.php
index b8ebfbc7993e06ffce491d3281eec164f809e9da..3b7f935ddf319f4acd07b04db7497ce5a8cd10a1 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Form/ElementTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Form/ElementTest.php
@@ -98,12 +98,13 @@ function testOptions() {
    */
   function testButtonClasses() {
     $this->drupalGet('form-test/button-class');
-    // Just contains(@class, "form-button") won't do because then
-    //  form-button-foo would contain form-button. Instead, check
-    // ' form-button '. Make sure it matches in the beginning and the end too
+    // Just contains(@class, "button") won't do because then
+    // "button-foo" would contain "button". Instead, check
+    // " button ". Make sure it matches in the beginning and the end too
     // by adding a space before and after.
-    $this->assertEqual(1, count($this->xpath('//*[contains(concat(" ", @class, " "), " form-button ")]')));
-    $this->assertEqual(1, count($this->xpath('//*[contains(concat(" ", @class, " "), " form-button-foo ")]')));
+    $this->assertEqual(2, count($this->xpath('//*[contains(concat(" ", @class, " "), " button ")]')));
+    $this->assertEqual(1, count($this->xpath('//*[contains(concat(" ", @class, " "), " button-foo ")]')));
+    $this->assertEqual(1, count($this->xpath('//*[contains(concat(" ", @class, " "), " button-danger ")]')));
   }
 
 }
diff --git a/core/modules/system/system.theme-rtl.css b/core/modules/system/system.theme-rtl.css
index 27b8ce715fba87c0d30da5614141c7a5d2265716..3c0afda68fc0f47d27cc2ff4e76f1e40aeba7734 100644
--- a/core/modules/system/system.theme-rtl.css
+++ b/core/modules/system/system.theme-rtl.css
@@ -82,7 +82,7 @@ ul.menu {
   margin-left: auto;
   margin-right: 0;
 }
-a.button.add:before {
+.button-action:before {
   margin-left: 0;
   margin-right: -0.1em;
   padding-left: 0.2em;
diff --git a/core/modules/system/system.theme.css b/core/modules/system/system.theme.css
index 6a4a64dabc1db4bff5dd6a2fce72a657fb466fe5..0e27355f46ca48da5b4b0b099566a4b4b07bccc7 100644
--- a/core/modules/system/system.theme.css
+++ b/core/modules/system/system.theme.css
@@ -349,13 +349,13 @@ ul.tabs {
 .action-links li:first-child {
   margin-left: 0; /* LTR */
 }
-a.button {
+.button {
   display: inline-block;
   line-height: 160%;
   padding: 0.2em 0.5em 0.3em;
   text-decoration: none;
 }
-a.button.add:before {
+.button-action:before {
   content: '+';
   font-weight: 900;
   margin-left: -0.1em; /* LTR */
diff --git a/core/modules/system/tests/modules/form_test/form_test.module b/core/modules/system/tests/modules/form_test/form_test.module
index b8a38675bd1bd1cee9939566d5022f3771f40ab9..46f63edd347b5cf3ef0ed067a6627a3e54bdae4b 100644
--- a/core/modules/system/tests/modules/form_test/form_test.module
+++ b/core/modules/system/tests/modules/form_test/form_test.module
@@ -2322,10 +2322,14 @@ function form_test_html_id($form, &$form_state) {
  */
 function form_test_button_class($form, &$form_state) {
   $form['button'] = array(
-    '#value' => 'test',
     '#type' => 'button',
+    '#value' => 'test',
     '#button_type' => 'foo',
   );
-
+  $form['delete'] = array(
+    '#type' => 'button',
+    '#value' => 'Delete',
+    '#button_type' => 'danger',
+  );
   return $form;
 }
diff --git a/core/themes/bartik/css/style-rtl.css b/core/themes/bartik/css/style-rtl.css
index 711a742da8ca0f0ebfd7c0ec43f896ec4fe468f1..456a01ce681aa108a84a834a26ef09f4bbe18e2f 100644
--- a/core/themes/bartik/css/style-rtl.css
+++ b/core/themes/bartik/css/style-rtl.css
@@ -146,8 +146,8 @@ ul.tips {
 
 /* ----------------- Buttons ------------------ */
 
-.form-button,
-a.button {
+button,
+.button {
   margin-right: 0;
   margin-left: 0.6em;
 }
diff --git a/core/themes/bartik/css/style.css b/core/themes/bartik/css/style.css
index 38e1afa875b938a9776f489e2ae7c0458794af33..18973206f08b105b6472a6e04a8040d667a27b17 100644
--- a/core/themes/bartik/css/style.css
+++ b/core/themes/bartik/css/style.css
@@ -1087,8 +1087,8 @@ div.password-confirm {
 
 /* ---------------- Buttons    ---------------- */
 
-.form-button,
-a.button {
+button,
+.button {
   background: #fff url(../images/buttons.png) 0 0 repeat-x;
   border: 1px solid #e4e4e4;
   border-bottom: 1px solid #b4b4b4;
@@ -1104,12 +1104,12 @@ a.button {
   padding: 4px 17px;
   border-radius: 15px;
 }
-.form-button:focus,
-.form-button:hover,
-.form-button:active,
-a.button:focus,
-a.button:hover,
-a.button:active {
+button:hover,
+button:focus,
+button:active,
+.button:hover,
+.button:focus,
+.button:active {
   text-decoration: none;
   color: #5a5a5a;
   background: #dedede;
diff --git a/core/themes/seven/style-rtl.css b/core/themes/seven/style-rtl.css
index 4974785ae60fe1ca4b5d1de9dd84fd898dfa1c9a..3d19f0461a86cc7ce26a6957622aa44c0efb5b75 100644
--- a/core/themes/seven/style-rtl.css
+++ b/core/themes/seven/style-rtl.css
@@ -127,8 +127,8 @@ body div.form-type-checkbox div.description {
   margin-left: 0;
   margin-right: 1.5em;
 }
-a.button,
-.form-button,
+button,
+.button,
 .image-button {
   margin-left: 1em;
   margin-right: 0;
diff --git a/core/themes/seven/style.css b/core/themes/seven/style.css
index e8ad0cf93c94970a9c3cd5720e133158d785c82b..ea27696d4a9245a85b913233e5b1e671127857b4 100644
--- a/core/themes/seven/style.css
+++ b/core/themes/seven/style.css
@@ -615,14 +615,14 @@ body div.form-type-radio div.description,
 body div.form-type-checkbox div.description {
   margin-left: 1.5em; /* LTR */
 }
-a.button,
-.form-button,
+button,
+.button,
 .image-button {
   margin-bottom: 1em;
   margin-right: 1em; /* LTR */
 }
-a.button,
-.form-button {
+button,
+.button {
   cursor: pointer;
   padding: 4px 17px;
   color: #5a5a5a;
@@ -636,53 +636,54 @@ a.button,
   border-right-color: #d2d2d2;
   background-color: #e4e4e4;
   border-radius: 20px;
-}
-a.button:hover,
-a.button:active,
-.form-button:hover,
-.form-button:active {
   text-decoration: none;
 }
-a.button:focus,
-a.button:hover,
-.form-button:focus,
-.form-button:hover {
+button:focus,
+button:hover,
+.button:focus,
+.button:hover {
   background-color: #c0c0c0;
   border: 1px solid #bebebe;
   border-left-color: #afafaf;
   border-right-color: #afafaf;
   border-bottom-color: #9b9b9b;
   color: #2e2e2e;
+  text-decoration: none;
 }
-a.button:active,
-.form-button:active {
+button:active,
+.button:active {
   background-color: #565656;
   border: 1px solid #333;
   border-left-color: #222;
   border-right-color: #222;
   border-bottom-color: #111;
   color: #fff;
+  text-decoration: none;
   text-shadow: #222 0 -1px 0;
 }
-.form-button-primary {
+.button-primary {
   background-color: #9dcae7;
   border: 1px solid #8eB7cd;
   border-bottom-color: #7691a2;
   color: #133B54;
 }
-.form-button-primary:focus,
-.form-button-primary:hover {
+.button-primary:focus,
+.button-primary:hover {
   background-color: #73b3dd;
   border: 1px solid #6ea3bf;
   border-bottom-color: #4680a0;
 }
-.form-button-primary:active {
+.button-primary:active {
   background-color: #3981b1;
   border: 1px solid #36647c;
   border-bottom-color: #284657;
 }
-.form-button-disabled,
-.form-button-disabled:active {
+.button-disabled,
+.button-disabled:active,
+input.button[disabled],
+input.button[disabled]:active,
+button[disabled],
+button[disabled]:active {
   background-color: #eee;
   border-color: #eee;
   text-shadow: none;
@@ -730,7 +731,7 @@ select.form-select:focus {
 .js input.throbbing {
   background-position: 100% -16px;
 }
-a.button.add {
+.button-action {
   background: #1078d8;
   background-image: -webkit-linear-gradient(top, #419ff1, #1076d5);
   background-image: -moz-linear-gradient(top, #419ff1, #1076d5);
@@ -747,22 +748,24 @@ a.button.add {
   padding: 4px 1em;
   text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.5);
 }
-a.button.add:focus,
-a.button.add:hover {
+.button-action:focus,
+.button-action:hover {
   background-color: #419cf1;
   background-image: -webkit-linear-gradient(top, #59abf3, #2a90ef);
   background-image: -moz-linear-gradient(top, #59abf3, #2a90ef);
   background-image: -o-linear-gradient(top, #59abf3, #2a90ef);
   background-image: linear-gradient(to bottom, #59abf3, #2a90ef);
+  border: 1px solid #0048c8;
   color: #fff;
 }
-a.button.add:active {
+.button-action:active {
   background-color: #0e69be;
   background-image: -webkit-linear-gradient(top, #0e69be, #2a93ef);
   background-image: -moz-linear-gradient(top, #0e69be, #2a93ef);
   background-image: -o-linear-gradient(top, #0e69be, #2a93ef);
   background-image: -ms-linear-gradient(top, #0e69be, #2a93ef);
   background-image: linear-gradient(to bottom, #0e69be, #2a93ef);
+  border: 1px solid #0048c8;
   -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .25);
   box-shadow: inset 0 1px 2px rgba(0, 0, 0, .25);
 }
