Keep custom theme when using AJAX submit
The form AJAX callback uses /system/ajax as the default. The menu router item for /system/ajax implements a theme callback to try and render the ajax contents in the same theme. For example, perhaps this is a node edit form and you have set node forms to use the same theme as the admin theme. The callback will find that. In your case, it is likely rendering in what it thinks is the default theme. Fortunately, you can specify your own ajax path like so:

$form['submit'] = array(
  '#type' =&gt; 'submit',
  '#value' =&gt; t('Submit'),
  '#attributes' =&gt; array('class' =&gt; array('submit')),
  '#ajax' =&gt; array(
    'callback' =&gt; '_display_form',
    'wrapper' =&gt; 'ajax_wrapper',      
    'effect' =&gt; 'fade',
    'event' =&gt; 'click',   
    'path' =&gt; 'vista/system/ajax'   
  ),
);


You'll then have to create a menu item for 'vista/system/ajax', which I guess would be a duplicate of 'system/ajax' without theme callback. Perhaps something like this:

/**
 * implements hook_menu
 */
function mymodule_menu() {
  $items['vista/system/ajax'] = array(
    'title' =&gt; 'AHAH callback',
    'page callback' =&gt; 'ajax_form_callback',
    'delivery callback' =&gt; 'ajax_deliver',
    'access callback' =&gt; TRUE,
    // 'theme callback' =&gt; 'ajax_base_page_theme',
    'type' =&gt; MENU_CALLBACK,
    'file path' =&gt; 'includes',
    'file' =&gt; 'form.inc',
  );
  return $items;
}


Don't forget to clear cache so the new menu item takes affect.

Also, I wanted to bring your attention to the ThemeKey module which is great way to change themes based on path.