diff --git a/uc_taxes/uc_taxes.module b/uc_taxes/uc_taxes.module
index fffa9f0..5b6f91f 100644
--- a/uc_taxes/uc_taxes.module
+++ b/uc_taxes/uc_taxes.module
@@ -214,20 +214,38 @@ function uc_taxes_uc_order($op, $order, $arg2) {
 function uc_taxes_uc_cart_item($op, $item) {
   switch ($op) {
     case 'view':
-      $node = node_load($item->nid);
-      $amount = 0;
-      foreach (uc_taxes_rate_load() as $tax) {
-        if ($tax->display_include && in_array($node->type, $tax->taxed_product_types) && ($tax->shippable == 0 || $item->data['shippable'] == 1)) {
-          $amount += $item->price * $tax->rate;
-        }
-      }
-
-      $item->price += $amount;
+      $item->price += _uc_taxes_get_included_tax($item);
       break;
   }
 }
 
 /**
+ * Gets the total amount of any taxes which are included in a cart item or product's display price.
+ */
+function _uc_taxes_get_included_tax($item) {
+  $node = node_load($item->nid);
+  $amount = 0;
+  foreach (uc_taxes_rate_load() as $tax) {
+    if ($tax->display_include && in_array($node->type, $tax->taxed_product_types) && ($tax->shippable == 0 || $item->data['shippable'] == 1)) {
+      $amount += $item->price * $tax->rate;
+    }
+  }
+  return $amount;
+}
+
+/**
+ * Implements hook_uc_line_item_alter().
+ */
+function uc_taxes_uc_line_item_alter(&$item, $order) {
+  // Add any included taxes to the subtotal line item.
+  if ($item['type'] == 'subtotal') {
+    foreach ($order->products as $product) {
+      $item['amount'] += _uc_taxes_get_included_tax($product);
+    }
+  }
+}
+
+/**
  * Implements hook_tapir_table_alter().
  */
 function uc_taxes_tapir_table_alter(&$table, $table_id) {
