diff --git a/src/widgets/app.rs b/src/widgets/app.rs
index 72cde9b1dedeb96dd9c3d62879bd76bb4b27b7ab..db871b596648cc32792d3d0623f98a9bd104240d 100644
--- a/src/widgets/app.rs
+++ b/src/widgets/app.rs
@@ -43,8 +43,10 @@ pub fn app_update(
     In((widget_context, entity, previous_props_entity)): In<(KayakWidgetContext, Entity, Entity)>,
     widget_param: WidgetParam<KayakApp, EmptyState>,
     camera: Query<&Camera, With<CameraUIKayak>>,
+    windows: Res<Windows>,
 ) -> bool {
     let mut window_change = false;
+
     if let Ok(app_style) = widget_param.style_query.get(entity) {
         if let Some(camera_entity) = widget_context.camera_entity {
             if let Ok(camera) = camera.get(camera_entity) {
@@ -55,6 +57,15 @@ pub fn app_update(
                     if app_style.height != StyleProp::Value(Units::Pixels(size.y)) {
                         window_change = true;
                     }
+                } else {
+                    let primary_window = windows.get_primary().unwrap();
+                    if app_style.width != StyleProp::Value(Units::Pixels(primary_window.width())) {
+                        window_change = true;
+                    }
+                    if app_style.height != StyleProp::Value(Units::Pixels(primary_window.height()))
+                    {
+                        window_change = true;
+                    }
                 }
             }
         }
@@ -69,6 +80,8 @@ pub fn app_render(
     mut commands: Commands,
     mut query: Query<(&mut KStyle, &KChildren)>,
     camera: Query<&Camera, With<CameraUIKayak>>,
+    windows: Res<Windows>,
+    images: Res<Assets<Image>>,
 ) -> bool {
     let (mut width, mut height) = (0.0, 0.0);
 
@@ -77,6 +90,17 @@ pub fn app_render(
             if let Some(size) = camera.logical_viewport_size() {
                 width = size.x;
                 height = size.y;
+            } else if let Some(viewport) = camera
+                .target
+                .get_render_target_info(&windows, &images)
+                .as_ref()
+                .map(|target_info| {
+                    let scale = target_info.scale_factor;
+                    (target_info.physical_size.as_dvec2() / scale).as_vec2()
+                })
+            {
+                width = viewport.x;
+                height = viewport.y;
             }
         }
     }