diff --git a/ds.module b/ds.module
index 234588b..9530b61 100644
--- a/ds.module
+++ b/ds.module
@@ -474,12 +474,14 @@ function ds_get_layout($entity_type, $bundle, $view_mode, $fallback = TRUE) {
     // Check if a layout is configured.
     if (isset($entity_info[$entity_type]['bundles'][$bundle]['layouts'][$view_mode]) && ($overriden || $view_mode == 'default')) {
       $layouts[$layout_key] = $entity_info[$entity_type]['bundles'][$bundle]['layouts'][$view_mode];
+      $layouts[$layout_key]['view_mode'] = $view_mode;
     }
 
     // In case $view_mode is not found, check if we have a default layout,
     // but only if the view mode settings aren't overridden for this view mode.
     if ($view_mode != 'default' && !$overriden && $fallback && isset($entity_info[$entity_type]['bundles'][$bundle]['layouts']['default'])) {
       $layouts[$layout_key] = $entity_info[$entity_type]['bundles'][$bundle]['layouts']['default'];
+      $layouts[$layout_key]['view_mode'] = 'default';
     }
 
     // Register the false return value as well.
@@ -684,7 +686,7 @@ function ds_field_attach_view_alter(&$build, $context) {
   $bundle = $build['#bundle'];
   $view_mode = $context['view_mode'];
   $entity = $context['entity'];
-  $layout = ds_get_layout($build['#entity_type'], $build['#bundle'], $context['view_mode']);
+  $layout = ds_get_layout($entity_type, $bundle, $view_mode);
 
   // Do not render panel layouts.
   if (!empty($layout['settings']['ds_panels'])) {
@@ -705,7 +707,7 @@ function ds_field_attach_view_alter(&$build, $context) {
 
   // Add Display Suite display fields.
   $fields = ds_get_fields($entity_type);
-  $field_values = ds_get_field_settings($entity_type, $bundle, $view_mode);
+  $field_values = ds_get_field_settings($entity_type, $bundle, $layout['view_mode']);
 
   foreach ($field_values as $key => $field) {
 
diff --git a/modules/ds_extras/ds_extras.module b/modules/ds_extras/ds_extras.module
index 8a199cc..fa54c74 100644
--- a/modules/ds_extras/ds_extras.module
+++ b/modules/ds_extras/ds_extras.module
@@ -289,7 +289,8 @@ function ds_preprocess_field(&$variables) {
   $config = array();
   static $field_settings = array();
   if (!isset($field_settings[$variables['element']['#entity_type']][$variables['element']['#bundle']][$variables['element']['#view_mode']])) {
-    $field_settings[$variables['element']['#entity_type']][$variables['element']['#bundle']][$variables['element']['#view_mode']] = ds_get_field_settings($variables['element']['#entity_type'], $variables['element']['#bundle'], $variables['element']['#view_mode']);
+    $layout = ds_get_layout($variables['element']['#entity_type'], $variables['element']['#bundle'], $variables['element']['#view_mode']);
+    $field_settings[$variables['element']['#entity_type']][$variables['element']['#bundle']][$variables['element']['#view_mode']] = ds_get_field_settings($variables['element']['#entity_type'], $variables['element']['#bundle'], $layout['view_mode']);
   }
 
   // Get the field name and field instance info - if available.
