diff --git src/wp-admin/customize.php src/wp-admin/customize.php
index d3b09f2..b1485d1 100644
--- src/wp-admin/customize.php
+++ src/wp-admin/customize.php
@@ -118,6 +118,7 @@ do_action( 'customize_controls_print_scripts' );
 			$cannot_expand = ! ( $screenshot || $wp_customize->theme()->get('Description') );
 		?>
 
+		<div id="widgets-right"><!-- For Widget Customizer, many widgets try to look for instances under div#widgets-right, so we have to add that ID to a container div in the customizer for compat -->
 		<div class="wp-full-overlay-sidebar-content accordion-container" tabindex="-1">
 			<div id="customize-info" class="accordion-section <?php if ( $cannot_expand ) echo ' cannot-expand'; ?>">
 				<div class="accordion-section-title" aria-label="<?php esc_attr_e( 'Theme Customizer Options' ); ?>" tabindex="0">
@@ -146,6 +147,7 @@ do_action( 'customize_controls_print_scripts' );
 				?>
 			</ul></div>
 		</div>
+		</div>
 
 		<div id="customize-footer-actions" class="wp-full-overlay-footer">
 			<a href="#" class="collapse-sidebar button-secondary" title="<?php esc_attr_e('Collapse Sidebar'); ?>">
diff --git src/wp-admin/js/customize-widgets.js src/wp-admin/js/customize-widgets.js
index f0c1e8c..b28bba8 100644
--- src/wp-admin/js/customize-widgets.js
+++ src/wp-admin/js/customize-widgets.js
@@ -35,10 +35,6 @@ var WidgetCustomizer = ( function ($) {
 		window.ajaxurl = wp.ajax.settings.url;
 	}
 
-	// Unfortunately many widgets try to look for instances under div#widgets-right,
-	// so we have to add that ID to a container div in the customizer for compat
-	$( '#customize-theme-controls' ).closest( 'div:not([id])' ).attr( 'id', 'widgets-right' );
-
 	/**
 	 * Set up model
 	 */
diff --git src/wp-includes/class-wp-customize-widgets.php src/wp-includes/class-wp-customize-widgets.php
index 335181f..e19006b 100644
--- src/wp-includes/class-wp-customize-widgets.php
+++ src/wp-includes/class-wp-customize-widgets.php
@@ -78,7 +78,10 @@ final class WP_Customize_Widgets {
 		add_action( 'after_setup_theme',                       array( $this, 'setup_widget_addition_previews' ) );
 		add_action( 'customize_controls_init',                 array( $this, 'customize_controls_init' ) );
 		add_action( 'customize_register',                      array( $this, 'schedule_customize_register' ), 1 );
-		add_action( 'customize_controls_enqueue_scripts',      array( $this, 'customize_controls_enqueue_deps' ) );
+		add_action( 'customize_controls_enqueue_scripts',      array( $this, 'enqueue_scripts' ) );
+		add_action( 'customize_controls_print_styles',         array( $this, 'print_styles' ) );
+		add_action( 'customize_controls_print_scripts',        array( $this, 'print_scripts' ) );
+		add_action( 'customize_controls_print_footer_scripts', array( $this, 'print_footer_scripts' ) );
 		add_action( 'customize_controls_print_footer_scripts', array( $this, 'output_widget_control_templates' ) );
 		add_action( 'customize_preview_init',                  array( $this, 'customize_preview_init' ) );
 
@@ -517,15 +520,46 @@ final class WP_Customize_Widgets {
 	}
 
 	/**
+	 * Call admin_print_styles-widgets.php and admin_print_styles hooks.
+	 *
+	 * @since 3.9.0
+	 * @access public
+	 */
+	public function print_styles() {
+		/** This action is documented in wp-admin/admin-header.php */
+		do_action( 'admin_print_styles-widgets.php' );
+
+		/** This action is documented in wp-admin/admin-header.php */
+		do_action( 'admin_print_styles' );
+	}
+
+	/**
+	 * Call admin_print_scripts-widgets.php and admin_print_scripts hooks.
+	 *
+	 * @since 3.9.0
+	 * @access public
+	 */
+	public function print_scripts() {
+		/** This action is documented in wp-admin/admin-header.php */
+		do_action( 'admin_print_scripts-widgets.php' );
+
+		/** This action is documented in wp-admin/admin-header.php */
+		do_action( 'admin_print_scripts' );
+	}
+
+	/**
 	 * Enqueue scripts and styles for customizer panel and export data to JS.
 	 *
 	 * @since 3.9.0
 	 * @access public
 	 */
-	public function customize_controls_enqueue_deps() {
+	public function enqueue_scripts() {
 		wp_enqueue_style( 'customize-widgets' );
 		wp_enqueue_script( 'customize-widgets' );
 
+		/** This action is documented in wp-admin/admin-header.php */
+		do_action( 'admin_enqueue_scripts', 'widgets.php' );
+
 		// Export available widgets with control_tpl removed from model
 		// since plugins need templates to be in the DOM
 		$available_widgets = array();
@@ -594,6 +628,20 @@ final class WP_Customize_Widgets {
 	}
 
 	/**
+	 * Call admin_print_footer_scripts and admin_print_scripts hooks.
+	 *
+	 * @since 3.9.0
+	 * @access public
+	 */
+	public function print_footer_scripts() {
+		/** This action is documented in wp-admin/admin-footer.php */
+		do_action( 'admin_print_footer_scripts' );
+
+		/** This action is documented in wp-admin/admin-footer.php */
+		do_action( 'admin_footer-widgets.php' );
+	}
+
+	/**
 	 * Render the widget form control templates into the DOM so that plugin scripts can manipulate them
 	 *
 	 * @since 3.9.0
