diff --git a/core/misc/dropbutton/dropbutton.base.css b/core/misc/dropbutton/dropbutton.base.css
index 35e9692..c13b814 100644
--- a/core/misc/dropbutton/dropbutton.base.css
+++ b/core/misc/dropbutton/dropbutton.base.css
@@ -18,6 +18,12 @@
   min-height: 2em;
   position: relative;
 }
+.js td .dropbutton-wrapper {
+  float: left;
+}
+.js td .dropbutton-wrapper.width-processed {
+  float: none;
+}
 .js .dropbutton-wrapper,
 .js .dropbutton-widget {
   max-width: 100%;
@@ -26,6 +32,9 @@
   .js .dropbutton-wrapper {
     width: 100%;
   }
+  .js td .dropbutton-wrapper {
+    width: auto;
+  }
 }
 
 /* Splitbuttons */
@@ -40,6 +49,12 @@
 .js .dropbutton-widget {
   position: absolute;
 }
+.js td .dropbutton-widget {
+  position: relative;
+}
+.js td .width-processed .dropbutton-widget{
+  position: absolute;
+}
 /* UL styles are over-scoped in core, so this selector needs weight parity. */
 .js .dropbutton-widget .dropbutton {
   list-style-image: none;
@@ -76,9 +91,18 @@
 .dropbutton-multiple .dropbutton .secondary-action {
   display: none;
 }
+.js td .dropbutton-multiple .dropbutton .secondary-action {
+  display: block;
+}
+.js td .dropbutton-multiple.width-processed .dropbutton .secondary-action {
+  display: none;
+}
 .dropbutton-multiple.open .dropbutton .secondary-action {
   display: block;
 }
+.js td .dropbutton-multiple.width-processed.open .dropbutton .secondary-action {
+  display: block;
+}
 .dropbutton-toggle {
   bottom: 0;
   display: block;
diff --git a/core/misc/dropbutton/dropbutton.js b/core/misc/dropbutton/dropbutton.js
index daebca2..62052de 100644
--- a/core/misc/dropbutton/dropbutton.js
+++ b/core/misc/dropbutton/dropbutton.js
@@ -17,6 +17,18 @@ Drupal.behaviors.dropButton = {
       // Initialize all buttons.
       for (var i = 0, il = $dropbuttons.length; i < il; i++) {
         DropButton.dropbuttons.push(new DropButton($dropbuttons[i], settings.dropbutton));
+        var buttonWidth = $($dropbuttons[i]).outerWidth();
+        // If the button is in the column of a table, set the width of the
+        // button to the width of the widest button action text. This prevents
+        // the button text overflowing the table column on narrow screens.
+        if ($($dropbuttons[i]).parents('td').length > 0) {
+          var $buttonWidth = $('.dropbutton-widget', $dropbuttons[i]).width();
+          var $buttonOuterWidth = $($dropbuttons[i]).width();
+          $('.dropbutton-widget', $dropbuttons[i]).width($buttonWidth);
+          $($dropbuttons[i]).width($buttonOuterWidth);
+          // Add a class to the button to show width processing has completed.
+          $($dropbuttons[i]).addClass('width-processed');
+        }
       }
     }
   }
