diff --git a/modules/cart/commerce_cart.module b/modules/cart/commerce_cart.module
index 4167567..853f5d8 100644
--- a/modules/cart/commerce_cart.module
+++ b/modules/cart/commerce_cart.module
@@ -1378,7 +1378,10 @@ function commerce_cart_add_to_cart_form($form, &$form_state, $line_item, $show_q
       // Set the default product now if it isn't already set.
       if (empty($matching_products)) {
         // If a product ID value was passed in, use that product if it exists.
-        if (!empty($form_state['values']['product_id']) &&
+        if (!empty($_GET['product_id']) && is_numeric($_GET['product_id']) && isset($products[$_GET['product_id']])) {
+          $default_product = $products[$_GET['product_id']];
+        }
+        elseif (!empty($form_state['values']['product_id']) &&
           !empty($products[$form_state['values']['product_id']])) {
           $default_product = $products[$form_state['values']['product_id']];
         }
diff --git a/modules/product_reference/commerce_product_reference.module b/modules/product_reference/commerce_product_reference.module
index cb7317f..9d79eaa 100644
--- a/modules/product_reference/commerce_product_reference.module
+++ b/modules/product_reference/commerce_product_reference.module
@@ -203,12 +203,22 @@ function commerce_product_reference_entity_view($entity, $entity_type, $view_mod
   // formatter.
   foreach (commerce_info_fields('commerce_product_reference', $entity_type) as $field_name => $field) {
     if (isset($instances[$field_name])) {
+
       // Find the default product based on the cardinality of the field.
       if ($field['cardinality'] == 1) {
         $product = $wrapper->{$field_name}->value();
       }
+      // Find the correct default product.
       else {
-        $product = $wrapper->{$field_name}->get(0)->value();
+        $delta = 0;
+        if (isset($_GET['product_id'])) {
+          foreach ($node->{$field_name}[$node->language] as $key => $value) {
+            if ($value['product_id'] == $_GET['product_id']) {
+              $delta = $key;
+            }
+          }
+        }
+        $product = $wrapper->{$field_name}->get($delta)->value();
       }
 
       // If we found a product and the reference field enables field injection...
