diff --git a/lb_ux.module b/lb_ux.module
index 6a696e3..f924ec0 100644
--- a/lb_ux.module
+++ b/lb_ux.module
@@ -58,3 +58,23 @@ function lb_ux_preprocess_item_list__layouts(&$variables) {
     }
   }
 }
+
+/**
+ * Implements hook_element_info_alter().
+ *
+ * Ensure our preProcess method is last.
+ */
+function lb_ux_element_info_alter(array &$types) {
+  if (isset($types['layout_builder'])) {
+    $key = -1;
+    foreach ($types['layout_builder']['#pre_render'] as $index => $preRenderMethod) {
+      if ($preRenderMethod[0] instanceof \Drupal\lb_ux\Element\LayoutBuilderUX) {
+        $key = $index;
+        break;
+      }
+    }
+    $entry = $types['layout_builder']['#pre_render'][$key];
+    unset($types['layout_builder']['#pre_render'][$key]);
+    $types['layout_builder']['#pre_render'][] = $entry;
+  }
+}
diff --git a/src/Element/LayoutBuilderUX.php b/src/Element/LayoutBuilderUX.php
index 59b9bd5..137aef8 100644
--- a/src/Element/LayoutBuilderUX.php
+++ b/src/Element/LayoutBuilderUX.php
@@ -15,122 +15,134 @@ class LayoutBuilderUX extends LayoutBuilder {
   /**
    * {@inheritdoc}
    */
-  protected function buildAdministrativeSection(SectionStorageInterface $section_storage, $delta) {
-    $build = parent::buildAdministrativeSection($section_storage, $delta);
+  public function preRender($element) {
+    $element = parent::preRender($element);
 
-    $section_label = $build['#attributes']['aria-label'];
+    if (!array_key_exists('layout_builder', $element)) {
+      return;
+    }
+
+    foreach (Element::children($element['layout_builder']) as $child) {
+      if (!array_key_exists('layout-builder__section', $element['layout_builder'][$child])) {
+        continue;
+      }
 
-    $build['configure']['#title'] = $this->t('<span class="visually-hidden">Configure @section</span>', ['@section' => $section_label]);
-    $build['configure']['#url'] = Url::fromRoute('layout_builder.configure_section_form', $build['configure']['#url']->getRouteParameters());
+      $build = &$element['layout_builder'][$child];
 
-    $build['remove']['#title'] = $this->t('<span class="visually-hidden">Remove @section</span>', ['@section' => $section_label]);
+      $section_label = $build['#attributes']['aria-label'];
 
-    $build['actions'] = [
-      '#type' => 'container',
-      '#weight' => -100,
-      '#attributes' => [
-        'class' => [
-          'layout-builder__actions',
-          'layout-builder__actions__section',
-        ],
-      ],
-      'label' => [
-        '#type' => 'html_tag',
-        '#tag' => 'span',
+      $build['configure']['#title'] = $this->t('<span class="visually-hidden">Configure @section</span>', ['@section' => $section_label]);
+      $build['configure']['#url'] = Url::fromRoute('layout_builder.configure_section_form', $build['configure']['#url']->getRouteParameters());
+
+      $build['remove']['#title'] = $this->t('<span class="visually-hidden">Remove @section</span>', ['@section' => $section_label]);
+
+      $build['actions'] = [
+        '#type' => 'container',
+        '#weight' => -100,
         '#attributes' => [
-          'class' => ['layout-builder__section-label'],
+          'class' => [
+            'layout-builder__actions',
+            'layout-builder__actions__section',
+          ],
         ],
-        'content' => ['#markup' => $section_label],
-      ],
-      'configure' => $build['configure'],
-      'remove' => $build['remove'],
-    ];
-    unset($build['configure'], $build['remove'], $build['section_label']);
-
-    foreach (Element::children($build['layout-builder__section']) as $region) {
-      foreach (Element::children($build['layout-builder__section'][$region]) as $uuid) {
-        if (in_array($uuid, ['layout_builder_add_block', 'region_label'])) {
-          continue 1;
-        }
+        'label' => [
+          '#type' => 'html_tag',
+          '#tag' => 'span',
+          '#attributes' => [
+            'class' => ['layout-builder__section-label'],
+          ],
+          'content' => ['#markup' => $section_label],
+        ],
+        'configure' => $build['configure'],
+        'remove' => $build['remove'],
+      ];
+      unset($build['configure'], $build['remove'], $build['section_label']);
 
-        $preview_fallback_string = $build['layout-builder__section'][$region][$uuid]['#attributes']['data-layout-content-preview-placeholder-label'];
-        $route_parameters = $build['layout-builder__section'][$region][$uuid]['#contextual_links']['layout_builder_block']['route_parameters'];
+      foreach (Element::children($build['layout-builder__section']) as $region) {
+        foreach (Element::children($build['layout-builder__section'][$region]) as $uuid) {
+          if (in_array($uuid, ['layout_builder_add_block', 'region_label'])) {
+            continue 1;
+          }
 
-        // Remove default contextual links.
-        unset($build['layout-builder__section'][$region][$uuid]['#contextual_links']['layout_builder_block']);
+          $preview_fallback_string = $build['layout-builder__section'][$region][$uuid]['#attributes']['data-layout-content-preview-placeholder-label'];
+          $route_parameters = $build['layout-builder__section'][$region][$uuid]['#contextual_links']['layout_builder_block']['route_parameters'];
 
+          // Remove default contextual links.
+          unset($build['layout-builder__section'][$region][$uuid]['#contextual_links']['layout_builder_block']);
 
-        // Ensure the 'content' key is present, as set by
-        // \Drupal\layout_builder\EventSubscriber\BlockComponentRenderArray.
-        assert(isset($build['layout-builder__section'][$region][$uuid]['content']));
 
-        // Replace content with actions and previous content.
-        $build['layout-builder__section'][$region][$uuid]['content'] = [
-          'actions' => [
-            '#type' => 'container',
-            '#attributes' => [
-              'class' => [
-                'layout-builder__actions',
-                'layout-builder__actions__block',
-              ],
-              'tabindex' => 0,
-            ],
-            'label' => [
-              '#type' => 'html_tag',
-              '#tag' => 'span',
-              '#attributes' => [
-                'class' => ['layout-builder__block-label'],
-              ],
-              'content' => ['#markup' => $preview_fallback_string],
-            ],
-            'move' => [
-              '#type' => 'link',
-              '#title' => $this->t('<span class="visually-hidden">Move @block</span>', ['@block' => $preview_fallback_string]),
-              '#url' => Url::fromRoute('layout_builder.move_block_form', $route_parameters),
+          // Ensure the 'content' key is present, as set by
+          // \Drupal\layout_builder\EventSubscriber\BlockComponentRenderArray.
+          assert(isset($build['layout-builder__section'][$region][$uuid]['content']));
+
+          // Replace content with actions and previous content.
+          $build['layout-builder__section'][$region][$uuid]['content'] = [
+            'actions' => [
+              '#type' => 'container',
               '#attributes' => [
                 'class' => [
-                  'use-ajax',
-                  'layout-builder__link',
-                  'layout-builder__link--move',
+                  'layout-builder__actions',
+                  'layout-builder__actions__block',
                 ],
-                'data-dialog-type' => 'dialog',
-                'data-dialog-renderer' => 'off_canvas',
+                'tabindex' => 0,
               ],
-            ],
-            'configure' => [
-              '#type' => 'link',
-              '#title' => $this->t('<span class="visually-hidden">Configure @block</span>', ['@block' => $preview_fallback_string]),
-              '#url' => Url::fromRoute('layout_builder.update_block', $route_parameters),
-              '#attributes' => [
-                'class' => [
-                  'use-ajax',
-                  'layout-builder__link',
-                  'layout-builder__link--configure',
+              'label' => [
+                '#type' => 'html_tag',
+                '#tag' => 'span',
+                '#attributes' => [
+                  'class' => ['layout-builder__block-label'],
                 ],
-                'data-dialog-type' => 'dialog',
-                'data-dialog-renderer' => 'off_canvas',
+                'content' => ['#markup' => $preview_fallback_string],
               ],
-            ],
-            'remove' => [
-              '#type' => 'link',
-              '#title' => $this->t('<span class="visually-hidden">Remove @block</span>', ['@block' => $preview_fallback_string]),
-              '#url' => Url::fromRoute('layout_builder.remove_block', $route_parameters),
-              '#attributes' => [
-                'class' => [
-                  'use-ajax',
-                  'layout-builder__link',
-                  'layout-builder__link--remove',
+              'move' => [
+                '#type' => 'link',
+                '#title' => $this->t('<span class="visually-hidden">Move @block</span>', ['@block' => $preview_fallback_string]),
+                '#url' => Url::fromRoute('layout_builder.move_block_form', $route_parameters),
+                '#attributes' => [
+                  'class' => [
+                    'use-ajax',
+                    'layout-builder__link',
+                    'layout-builder__link--move',
+                  ],
+                  'data-dialog-type' => 'dialog',
+                  'data-dialog-renderer' => 'off_canvas',
+                ],
+              ],
+              'configure' => [
+                '#type' => 'link',
+                '#title' => $this->t('<span class="visually-hidden">Configure @block</span>', ['@block' => $preview_fallback_string]),
+                '#url' => Url::fromRoute('layout_builder.update_block', $route_parameters),
+                '#attributes' => [
+                  'class' => [
+                    'use-ajax',
+                    'layout-builder__link',
+                    'layout-builder__link--configure',
+                  ],
+                  'data-dialog-type' => 'dialog',
+                  'data-dialog-renderer' => 'off_canvas',
+                ],
+              ],
+              'remove' => [
+                '#type' => 'link',
+                '#title' => $this->t('<span class="visually-hidden">Remove @block</span>', ['@block' => $preview_fallback_string]),
+                '#url' => Url::fromRoute('layout_builder.remove_block', $route_parameters),
+                '#attributes' => [
+                  'class' => [
+                    'use-ajax',
+                    'layout-builder__link',
+                    'layout-builder__link--remove',
+                  ],
+                  'data-dialog-type' => 'dialog',
+                  'data-dialog-renderer' => 'off_canvas',
                 ],
-                'data-dialog-type' => 'dialog',
-                'data-dialog-renderer' => 'off_canvas',
               ],
             ],
-          ],
-          'content' => $build['layout-builder__section'][$region][$uuid]['content'],
-        ];
+            'content' => $build['layout-builder__section'][$region][$uuid]['content'],
+          ];
+        }
       }
     }
-    return $build;
+    return $element;
   }
 
   /**
