diff --git a/core/modules/image/image.admin.inc b/core/modules/image/image.admin.inc
index 9675e98..7070562 100644
--- a/core/modules/image/image.admin.inc
+++ b/core/modules/image/image.admin.inc
@@ -16,48 +16,14 @@
  */
 function theme_image_style_effects($variables) {
   $form = $variables['form'];
-  $rows = array();
-
-  foreach (element_children($form) as $key) {
-    $row = array();
-    $form[$key]['weight']['#attributes']['class'] = array('image-effect-order-weight');
-    if ($key != 'new') {
-      $summary = drupal_render($form[$key]['summary']);
-      $row[] = drupal_render($form[$key]['label']) . (empty($summary) ? '' : ' ' . $summary);
-      $row[] = drupal_render($form[$key]['weight']);
-      $row[] = array('data' => $form[$key]['operations']);
-    }
-    else {
-      // Add the row for adding a new image effect.
-      $row[] = '<div class="image-style-new">' . drupal_render($form['new']['new']) . drupal_render($form['new']['add']) . '</div>';
-      $row[] = drupal_render($form['new']['weight']);
-      $row[] = '';
-    }
-
-    $rows[] = array(
-      'data' => $row,
-      'class' => array('draggable'),
-    );
-  }
-
-  $header = array(
-    t('Effect'),
-    t('Weight'),
-    t('Operations'),
-  );
-
-  if (count($rows) == 1 && (!isset($form['new']['#access']) || $form['new']['#access'])) {
-    array_unshift($rows, array(array(
-      'data' => t('There are currently no effects in this style. Add one by selecting an option below.'),
-      'colspan' => 4,
-    )));
-  }
 
   $table = array(
     '#type' => 'table',
-    '#header' => $header,
-    '#rows' => $rows,
-    '#attributes' => array('id' => 'image-style-effects'),
+    '#header' => array(
+      t('Effect'),
+      t('Weight'),
+      t('Operations'),
+    ),
     '#tabledrag' => array(
       array(
         'action' => 'order',
@@ -65,7 +31,47 @@ function theme_image_style_effects($variables) {
         'group' => 'image-effect-order-weight',
       ),
     ),
+    '#attributes' => array(
+      'id' => 'image-style-effects',
+    ),
+    '#empty' => t('There are currently no effects in this style. Add one by selecting an option below.'),
+  );
+
+  $row_defaults = array(
+    '#attributes' => array(
+      'class' => array('draggable'),
+    )
   );
+
+  foreach (element_children($form) as $key) {
+    $form[$key]['weight']['#attributes']['class'] = array('image-effect-order-weight');
+    if ($key != 'new') {
+      $summary = drupal_render($form[$key]['summary']);
+      $form[$key]['label']['#suffix'] = (empty($summary) ? '' : ' ' . $summary);
+
+      $table[$key] = $row_defaults + array(
+          'label_summary' => array($form[$key]['label']),
+          'weight' => $form[$key]['weight'],
+          'operations' => $form[$key]['operations'],
+        );
+    }
+    else {
+      // Add the row for adding a new image effect.
+      $table[$key] = $row_defaults + array(
+          'image_style_new' => array(
+            '#type' => 'container',
+            '#attributes' => array(
+              'class' => array('image-style-new')
+            ),
+            'image_style_new_add' => $form[$key]['new'],
+            'image_style_new_submit' => $form[$key]['add'],
+          ),
+          'weight' => $form[$key]['weight'],
+          'empty_cell' => array(),
+        );
+    }
+  }
+
   return drupal_render($table);
 }
 
