diff --git a/modules/product_reference/commerce_product_reference.module b/modules/product_reference/commerce_product_reference.module
index 57d2581..047bd7a 100644
--- a/modules/product_reference/commerce_product_reference.module
+++ b/modules/product_reference/commerce_product_reference.module
@@ -77,14 +77,14 @@ function commerce_product_reference_field_extra_fields() {
 
         foreach ($product_fields['commerce_product'] as $key => $value) {
           foreach ($value['display'] as $product_extra_field_name => $product_extra_field) {
-            $product_extra_field['label'] = t('Product: @label', array('@label' => $product_extra_field['label']));
+            $product_extra_field['label'] = t('Product: @field : @label', array('@field' => $instance_settings['label'], '@label' => $product_extra_field['label']));
 
             $product_extra_field['display']['default'] = array(
               'weight' => 0,
               'visible' => FALSE,
             );
 
-            $extra[$entity_type][$bundle_name]['display']['product:' . $product_extra_field_name] = $product_extra_field;
+            $extra[$entity_type][$bundle_name]['display']['product:' . $field_name . ':' . $product_extra_field_name] = $product_extra_field;
           }
         }
 
@@ -100,8 +100,8 @@ function commerce_product_reference_field_extra_fields() {
 
         foreach ($product_types as $product_type) {
           foreach (field_info_instances('commerce_product', $product_type) as $product_field_name => $product_field) {
-            $extra[$entity_type][$bundle_name]['display']['product:' . $product_field_name] = array(
-              'label' => t('Product: @label', array('@label' => $product_field['label'])),
+            $extra[$entity_type][$bundle_name]['display']['product:' . $field_name . ':' . $product_field_name] = array(
+              'label' => t('Product: @field : @label', array('@field' => $field_instance['label'], '@label' => $product_field['label'])),
               'description' => t('Field from a referenced product.'),
               'weight' => $product_field['widget']['weight'],
               'configurable' => TRUE,
@@ -136,16 +136,23 @@ function commerce_product_reference_field_extra_fields_display_alter(&$displays,
     return;
   }
 
-  foreach ($product_fields['commerce_product'] as $key => $value) {
-    foreach ($value['display'] as $product_extra_field_name => $product_extra_field) {
-      // If the current extra field is represented in the $displays array...
-      if (!empty($displays['product:' . $product_extra_field_name])) {
-        // And no data yet exists for the extra field in the bundle settings...
-        if (empty($bundle_settings['extra_fields']['display']['product:' . $product_extra_field_name]) ||
-          (empty($bundle_settings['view_modes'][$context['view_mode']]['custom_settings']) && empty($bundle_settings['extra_fields']['display']['product:' . $product_extra_field_name]['default'])) ||
-          (!empty($bundle_settings['view_modes'][$context['view_mode']]['custom_settings']) && empty($bundle_settings['extra_fields']['display']['product:' . $product_extra_field_name][$context['view_mode']]))) {
-          // Default the extra field to be invisible.
-          $displays['product:' . $product_extra_field_name]['visible'] = FALSE;
+  $bundle_fields = field_read_fields(array('entity_type' => $context['entity_type'], 'bundle' => $context['bundle']));
+
+  foreach (commerce_info_fields('commerce_product_reference') as $field_name => $field) {
+    if (in_array($field_name, $bundle_fields)) {
+      foreach ($product_fields['commerce_product'] as $key => $value) {
+        foreach ($value['display'] as $product_extra_field_name => $product_extra_field) {
+          // If the current extra field is represented in the $displays array...
+          if (!empty($displays['product:' . $field_name . ':' . $product_extra_field_name])) {
+            // And no data yet exists for the extra field in the bundle settings...
+            if (empty($bundle_settings['extra_fields']['display']['product:' . $field_name . ':' . $product_extra_field_name]) ||
+              (empty($bundle_settings['view_modes'][$context['view_mode']]['custom_settings']) && empty($bundle_settings['extra_fields']['display']['product:' . $field_name . ':' . $product_extra_field_name]['default'])) ||
+              (!empty($bundle_settings['view_modes'][$context['view_mode']]['custom_settings']) && empty($bundle_settings['extra_fields']['display']['product:' . $field_name . ':' . $product_extra_field_name][$context['view_mode']]))
+            ) {
+              // Default the extra field to be invisible.
+              $displays['product:' . $field_name . ':' . $product_extra_field_name]['visible'] = FALSE;
+            }
+          }
         }
       }
     }
@@ -396,7 +404,7 @@ function commerce_product_reference_entity_view($entity, $entity_type, $view_mod
           // Only prepare visible fields.
           if (!isset($product_field['display'][$reference_view_mode]['type']) || $product_field['display'][$reference_view_mode]['type'] != 'hidden') {
             // Add the product field to the entity's content array.
-            $content_key = 'product:' . $product_field_name;
+            $content_key = 'product:' . $field_name . ':' . $product_field_name;
 
             $entity->content[$content_key] = field_view_field('commerce_product', $product, $product_field_name, $reference_view_mode, $langcode);
 
