diff --git a/payment/uc_payment/uc_payment.module b/payment/uc_payment/uc_payment.module
index c92cead..99c632b 100644
--- a/payment/uc_payment/uc_payment.module
+++ b/payment/uc_payment/uc_payment.module
@@ -124,11 +124,8 @@ function uc_payment_theme() {
 function uc_payment_form_uc_cart_view_form_alter(&$form, &$form_state) {
   $methods = _uc_payment_method_list();
   foreach ($methods as $id => $method) {
-    if ($method['checkout'] && isset($method['express'])) {
-      $form['actions'][$id] = $method['express'](array(), $form_state) + array(
-        '#prefix' => '<div align="right">',
-        '#suffix' => '</div>',
-      );
+    if ($method['checkout'] && isset($method['express']) && $express = $method['express'](array(), $form_state)) {
+      $form['actions']['checkout'][$id] = $express;
     }
   }
 }
diff --git a/uc_cart/uc_cart.css b/uc_cart/uc_cart.css
index dc3a733..d161db3 100644
--- a/uc_cart/uc_cart.css
+++ b/uc_cart/uc_cart.css
@@ -107,6 +107,15 @@
   vertical-align: middle;
 }
 
+.uc-cart-checkout-button {
+  float: right;
+  clear: right;
+}
+
+.uc-cart-checkout-button-separator {
+  text-align: center;
+}
+
 /**
  * CSS rules for the cart review table.
  */
diff --git a/uc_cart/uc_cart.module b/uc_cart/uc_cart.module
index fbef316..79477bc 100644
--- a/uc_cart/uc_cart.module
+++ b/uc_cart/uc_cart.module
@@ -157,6 +157,9 @@ function uc_cart_theme() {
     'uc_cart_view_form' => array(
       'render element' => 'form',
     ),
+    'uc_cart_checkout_buttons' => array(
+      'render element' => 'buttons',
+    ),
     'uc_empty_cart' => array(
       'variables' => array(),
     ),
@@ -926,8 +929,11 @@ function uc_cart_view_form($form, &$form_state, $items = NULL) {
     '#name' => 'update-cart',
     '#value' => t('Update cart'),
   );
+  $form['actions']['checkout'] = array(
+    '#theme' => 'uc_cart_checkout_buttons',
+  );
   if (variable_get('uc_checkout_enabled', TRUE)) {
-    $form['actions']['checkout'] = array(
+    $form['actions']['checkout']['checkout'] = array(
       '#type' => 'submit',
       '#value' => t('Checkout'),
       '#submit' => array('uc_cart_view_form_submit', 'uc_cart_view_form_checkout'),
@@ -1004,6 +1010,45 @@ function theme_uc_cart_view_form($variables) {
 }
 
 /**
+ * Themes the cart checkout button(s).
+ *
+ * @see uc_cart_view_form()
+ * @ingroup themeable
+ */
+function theme_uc_cart_checkout_buttons($variables) {
+  $output = '';
+
+  if ($buttons = element_children($variables['buttons'])) {
+    // Render the first button.
+    $button = array_shift($buttons);
+    $output = drupal_render($variables['buttons'][$button]);
+
+    // Render any remaining buttons inside a separate container.
+    if ($buttons) {
+      $output .= '<div class="uc-cart-checkout-button-container clearfix">';
+
+      // Render the second button.
+      $output .= '<div class="uc-cart-checkout-button">';
+      $output .= '<div class="uc-cart-checkout-button-separator">' . t('- or -') . '</div>';
+      $button = array_shift($buttons);
+      $output .= drupal_render($variables['buttons'][$button]);
+      $output .= '</div>';
+
+      // Render any remaining buttons.
+      foreach ($buttons as $button) {
+        $output .= '<div class="uc-cart-checkout-button">';
+        $output .= drupal_render($variables['buttons'][$button]);
+        $output .= '</div>';
+      }
+
+      $output .= '</div>';
+    }
+  }
+
+  return $output;
+}
+
+/**
  * Lists the products in the cart in a TAPIr table.
  */
 function uc_cart_view_table($table) {
