diff --git a/modules/product_reference/commerce_product_reference.module b/modules/product_reference/commerce_product_reference.module
index 57d2581..588b1ee 100644
--- a/modules/product_reference/commerce_product_reference.module
+++ b/modules/product_reference/commerce_product_reference.module
@@ -329,6 +329,8 @@ function commerce_product_reference_entity_view($entity, $entity_type, $view_mod
   // this entity has a product reference field instance attached to it.
   $wrapper = NULL;
 
+  $module_path = drupal_get_path('module', 'commerce_product');
+
   // Loop through product reference fields to see if any exist on this entity
   // bundle that is either hidden or displayed with the Add to Cart form display
   // formatter.
@@ -344,28 +346,45 @@ function commerce_product_reference_entity_view($entity, $entity_type, $view_mod
         $wrapper = entity_metadata_wrapper($entity_type, $entity);
       }
 
+      // If the field is missing continue to next product reference field.
+      if (!isset($wrapper->{$field_name})) {
+        continue;
+      }
+
       // Find the default product based on the cardinality of the field.
       $product = NULL;
+      $products = $wrapper->{$field_name}->value();
+
+      // If there are no products on this field continue to the next field.
+      if (empty($products)) {
+        continue;
+      }
 
       if ($field['cardinality'] == 1) {
-        $product = $wrapper->{$field_name}->value();
+        // The value of single value reference fields is the product object.
+        $product = $products;
       }
-      elseif (count($wrapper->{$field_name}) > 0) {
-        $product = commerce_product_reference_default_product($wrapper->{$field_name}->value());
+      else {
+        // Find the default from the array of all the referenced products.
+        $default_product = commerce_product_reference_default_product($products);
 
-        // If the product is disabled, attempt to find one that is active and
+        // If the product is disabled, attempt to find the next active one and
         // use that as the default product instead.
-        if (!empty($product) && $product->status == 0) {
-          foreach ($wrapper->{$field_name} as $delta => $product_wrapper) {
-            if ($product_wrapper->status->value() != 0) {
-              $product = $product_wrapper->value();
+        if (!empty($default_product->status)) {
+          $product = $default_product;
+        }
+        else {
+          foreach ($products as $active_product) {
+            if (!empty($active_product->status)) {
+              // Found an active product.
+              $product = $active_product;
               break;
             }
           }
         }
       }
 
-      // If we found a product and the reference field enables field injection...
+      // If we found a product and the reference field enables field injection.
       if (!empty($product) && $instances[$field_name]['settings']['field_injection']) {
         // Add the display context for these field to the product.
         $product->display_context = array(
@@ -430,11 +449,12 @@ function commerce_product_reference_entity_view($entity, $entity_type, $view_mod
           }
         }
 
+        // Get display with view mode.
+        $display = field_extra_fields_get_display('commerce_product', $product->type, $reference_view_mode);
+
         // Attach "extra fields" to the bundle representing all the extra fields
         // currently attached to products.
         foreach (field_info_extra_fields('commerce_product', $product->type, 'display') as $product_extra_field_name => $product_extra_field) {
-          $display = field_extra_fields_get_display('commerce_product', $product->type, $reference_view_mode);
-
           // Only include extra fields that specify a theme function and that
           // are visible on the current view mode.
           if (!empty($product_extra_field['theme']) &&
@@ -448,7 +468,7 @@ function commerce_product_reference_entity_view($entity, $entity_type, $view_mod
               '#label' => $product_extra_field['label'] . ':',
               '#product' => $product,
               '#attached' => array(
-                'css' => array(drupal_get_path('module', 'commerce_product') . '/theme/commerce_product.theme.css'),
+                'css' => array($module_path . '/theme/commerce_product.theme.css'),
               ),
             );
 
