diff --git a/modules/cart/commerce_cart.module b/modules/cart/commerce_cart.module
index 5d76160..90ef0e2 100644
--- a/modules/cart/commerce_cart.module
+++ b/modules/cart/commerce_cart.module
@@ -1607,6 +1607,9 @@ 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 (isset($_GET['product_id'])) {
+          $form_state['values']['product_id'] = $_GET['product_id'];
+        }
         if (!empty($form_state['values']['product_id']) &&
           !empty($products[$form_state['values']['product_id']])) {
           $default_product = $products[$form_state['values']['product_id']];
@@ -2269,7 +2272,15 @@ function commerce_cart_field_formatter_view($entity_type, $entity, $field, $inst
     // Check to ensure products are referenced, before returning results.
     if (!empty($products)) {
       $type = !empty($settings['line_item_type']) ? $settings['line_item_type'] : 'product';
-      $line_item = commerce_product_line_item_new(reset($products), $settings['default_quantity'], 0, array(), $type);
+      $default_product = reset($products);
+      if (isset($_GET['product_id'])) {
+        foreach ($products as $key => $value) {
+          if ($value->product_id == $_GET['product_id']) {
+            $default_product = $products[$key];
+          }
+        }
+      }
+      $line_item = commerce_product_line_item_new($default_product, $settings['default_quantity'], 0, array(), $type);
       $line_item->data['context']['product_ids'] = array_keys($products);
       $line_item->data['context']['add_to_cart_combine'] = $settings['combine'];
       $line_item->data['context']['show_single_product_attributes'] = $settings['show_single_product_attributes'];
diff --git a/modules/product_reference/commerce_product_reference.module b/modules/product_reference/commerce_product_reference.module
index 62cb8b8..ea0e6fc 100644
--- a/modules/product_reference/commerce_product_reference.module
+++ b/modules/product_reference/commerce_product_reference.module
@@ -322,7 +322,16 @@ function commerce_product_reference_entity_view($entity, $entity_type, $view_mod
         $product = $wrapper->{$field_name}->value();
       }
       else {
-        $product = $wrapper->{$field_name}->get(0)->value();
+        $delta = 0;
+        if (isset($_GET['product_id'])) {
+          foreach ($wrapper->{$field_name}->value() as $key => $value) {
+            if ($value->product_id == $_GET['product_id']) {
+              $delta = $key;
+              break;
+            }
+          }
+        }
+        $product = $wrapper->{$field_name}->get($delta)->value();
 
         // If the product is disabled, attempt to find one that is active and
         // use that as the default product instead.
