diff --git a/panopoly_magic.module b/panopoly_magic.module
index 662590c..6b4a06a 100755
--- a/panopoly_magic.module
+++ b/panopoly_magic.module
@@ -23,6 +23,16 @@ function panopoly_magic_theme($existing, $type, $theme, $path) {
 }
 
 /**
+ * Implements hook_menu_alter().
+ */
+function panopoly_magic_menu_alter(&$items) {
+  // Include entity_field.inc from ctools to ensure that files can be properly removed 
+  // from within the panelizer edit forms.
+  $items['file/ajax']['file'] = 'entity_field.inc';
+  $items['file/ajax']['file path'] = drupal_get_path('module', 'ctools') .'/plugins/content_types/entity_context';
+}
+
+/**
  * Configuration Form for Panopoly Magic
  */
 function panopoly_magic_configure_form($form, &$form_state) {
@@ -63,7 +73,13 @@ function panopoly_magic_form_alter(&$form, &$form_state, $form_id) {
    * Add a custom preview to the content type edit form and style edit form. This is applied in all cases, except for cases where
    * we are customizing an entity (i.e. fieldable panels panes) because we cannot reliable regenerate a preview without saving.
    */
-  if (variable_get('panopoly_magic_live_preview', 1) && (strpos($form_id, '_content_type_edit_form') || $form_id == 'panels_edit_style_type_form') || $form_id == 'panels_edit_style_settings_form' || $form_id == 'ctools_entity_field_content_type_formatter_options') {
+  $ids_to_alter = array(
+    'panels_edit_style_settings_form',
+    'panels_edit_style_type_form',
+    'ctools_entity_field_content_type_formatter_options',
+    'ctools_entity_field_content_type_formatter_styles',
+  );
+  if (variable_get('panopoly_magic_live_preview', 1) && (strpos($form_id, '_content_type_edit_form') || in_array($form_id, $ids_to_alter))) {
 
     // Start the magic
     $pane = $form_id == 'panels_edit_style_settings_form' ? $form_state['display']->content[$form_state['pid']] : $form_state['pane'];
@@ -136,7 +152,7 @@ function panopoly_magic_form_alter(&$form, &$form_state, $form_id) {
     }
 
     // Set the configuration and determine the content for the pane
-    $configuration = ($form_state['rebuild'] && (strpos($form_id, 'content_type_edit_form') || $form_id == 'ctools_entity_field_content_type_formatter_options')) ? $form_state['input'] : $pane->configuration;
+    $configuration = ($form_state['rebuild'] && (strpos($form_id, 'content_type_edit_form') || $form_id == 'ctools_entity_field_content_type_formatter_options' || $form_id == 'ctools_entity_field_content_type_formatter_styles')) ? array_merge($pane->configuration, $form_state['input']) : $pane->configuration;
     $keywords = array();
     $args = array();
     if (!empty($form_state['contexts'])) {
@@ -148,6 +164,24 @@ function panopoly_magic_form_alter(&$form, &$form_state, $form_id) {
     else {
       $context = array();
     }
+   
+    // Special case for panelizer fields being edited through the IPE. For some reason images are not being fully loaded
+    if (!empty($pane->configuration['formatter']) && $pane->configuration['formatter'] == 'image') {
+      list($entity_type, $field_name) = explode(':', $pane->subtype);
+      if (!empty($context['panelizer']) && !empty($context['panelizer']->data)) {
+        $context['panelizer']->data->{$field_name}[LANGUAGE_NONE][0] = array_merge((array) file_load($context['panelizer']->data->{$field_name}[LANGUAGE_NONE][0]['fid']), $context['panelizer']->data->{$field_name}[LANGUAGE_NONE][0]);
+      }
+
+      if (!empty($configuration['image_style']) ) {
+        $configuration['formatter_settings']['image_style'] = $configuration['image_style'];
+        unset($configuration['image_style']);
+      }
+
+      if (!empty($configuration['image_link'])) {
+        $configuration['formatter_settings']['image_link'] = $configuration['image_link'];
+        unset($configuration['image_link']);
+      }
+    }
     $content = (empty($preview_subtype)) ? ctools_content_render($pane->type, $pane->subtype, $configuration, $keywords, $args, $context) : ctools_content_render($pane->type, $preview_subtype, $configuration, $keywords, $args, $context);
 
 
@@ -206,6 +240,7 @@ function panopoly_magic_form_alter(&$form, &$form_state, $form_id) {
     'ctools_node_content_content_type_edit_form',
     'ctools_entity_field_content_type_formatter_options',
     'panopoly_search_facet_content_type_edit_form',
+    'ctools_entity_field_content_type_formatter_styles'
   );
 
   if (in_array($form_id, $forms_to_improve)) {
@@ -585,16 +620,65 @@ function panopoly_magic_form_ctools_entity_field_content_type_formatter_options_
     }
   }
 
+  // Only add in the field edit fields if FAPE is enabled.
+  if (module_exists('fape')) {
+    if (empty($form_state['entity'])) {
+      // Determine what entity type and field name we are editing based on the form subtype and URL args.
+      $arg_parts = explode(':', arg(4));
+      list($entity_type, $field_name) = explode(':', $form_state['subtype_name']);
+      $entity = reset(entity_load($entity_type, array($arg_parts[2])));
+
+      $form_state['entity'] = $entity;
+      $form_state['entity_type'] = $entity_type;
+      $form_state['field_name'] = $field_name;
+      $form_state['bundle'] = empty($entity->bundle) ? $entity->type : $entity->bundle;
+      $form_state['field_instance'] = field_info_instance($entity_type, $field_name, $form_state['bundle']);
+      $form_state['langcode'] = LANGUAGE_NONE;
+      $form_state['subform_id'] = 'fape_field_edit_field_form';
+    }
+
+    // Ensure form id, form token, and form build id are on the root of the form.
+    // Image fields in particular have issues with this.
+    $form['form_id'] = $form['general_settings']['form_id'];
+    $form['form_token'] = $form['general_settings']['form_token'];
+    $form['form_build_id'] = $form['general_settings']['form_build_id'];
+    unset($form['general_settings']['form_id']);
+    unset($form['general_settings']['form_token']);
+    unset($form['general_settings']['form_build_id']);
+
+    // Add the field edit form.
+    fape_field_edit_field_form($form, $form_state);
+
+    // Remove the default submitter in favor of our own custom submit callback.
+    array_pop($form['#submit']);
+    $form['#submit'][] = 'panopoly_magic_fape_submit';
+
+    // Pre-rende fields into a fieldset.
+    if (module_exists('panopoly_widgets')) {
+      $form['#pre_render'][] = 'panopoly_widgets_fieldable_panel_pane_pre_render';
+    }
+  }
+
   // Enable auto submit functionality
   if (variable_get('panopoly_magic_live_preview', 1)) {
     panopoly_magic_autosubmit_configure($form);
   }
 
+
   // Add a custom submit handler to our preview and submit option
   $form['#submit'][] = 'panopoly_magic_views_content_type_modal_submit';
   $form['buttons']['preview']['#submit'][] = 'panopoly_magic_views_content_type_modal_submit';
 }
 
+
+/**
+ * Custom submit callback for FAPE enabled stylizer forms.
+ */
+function panopoly_magic_fape_submit(&$form, &$form_state) {
+  fape_field_edit_field_form_submit($form, $form_state);
+  entity_save($form_state['entity_type'], $form_state['entity']);
+}
+
 /** 
  * Implementation of hook_form_FORM_ID_alter().
  *
