diff --git a/src/input_common/drivers/camera.h b/src/input_common/drivers/camera.h
index 38fb1ae4c9..ead3e0fdee 100644
--- a/src/input_common/drivers/camera.h
+++ b/src/input_common/drivers/camera.h
@@ -25,6 +25,7 @@ public:
     Common::Input::CameraError SetCameraFormat(const PadIdentifier& identifier_,
                                                Common::Input::CameraFormat camera_format) override;
 
+private:
     Common::Input::CameraStatus status{};
 };
 
diff --git a/src/yuzu/bootmanager.cpp b/src/yuzu/bootmanager.cpp
index ffd3f00287..1368b20d5a 100644
--- a/src/yuzu/bootmanager.cpp
+++ b/src/yuzu/bootmanager.cpp
@@ -764,7 +764,9 @@ void GRenderWindow::InitializeCamera() {
         return;
     }
 
-    camera_data.resize(CAMERA_WIDTH * CAMERA_HEIGHT);
+    const auto camera_width = input_subsystem->GetCamera()->getImageWidth();
+    const auto camera_height = input_subsystem->GetCamera()->getImageHeight();
+    camera_data.resize(camera_width * camera_height);
     camera_capture->setCaptureDestination(QCameraImageCapture::CaptureDestination::CaptureToBuffer);
     connect(camera_capture.get(), &QCameraImageCapture::imageCaptured, this,
             &GRenderWindow::OnCameraCapture);
@@ -822,12 +824,18 @@ void GRenderWindow::RequestCameraCapture() {
 void GRenderWindow::OnCameraCapture(int requestId, const QImage& img) {
 #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
     // TODO: Capture directly in the format and resolution needed
+    const auto camera_width = input_subsystem->GetCamera()->getImageWidth();
+    const auto camera_height = input_subsystem->GetCamera()->getImageHeight();
     const auto converted =
-        img.scaled(CAMERA_WIDTH, CAMERA_HEIGHT, Qt::AspectRatioMode::IgnoreAspectRatio,
+        img.scaled(static_cast<int>(camera_width), static_cast<int>(camera_height),
+                   Qt::AspectRatioMode::IgnoreAspectRatio,
                    Qt::TransformationMode::SmoothTransformation)
             .mirrored(false, true);
-    std::memcpy(camera_data.data(), converted.bits(), CAMERA_WIDTH * CAMERA_HEIGHT * sizeof(u32));
-    input_subsystem->GetCamera()->SetCameraData(CAMERA_WIDTH, CAMERA_HEIGHT, camera_data);
+    if (camera_data.size() != camera_width * camera_height) {
+        camera_data.resize(camera_width * camera_height);
+    }
+    std::memcpy(camera_data.data(), converted.bits(), camera_width * camera_height * sizeof(u32));
+    input_subsystem->GetCamera()->SetCameraData(camera_width, camera_height, camera_data);
     pending_camera_snapshots = 0;
 #endif
 }
diff --git a/src/yuzu/bootmanager.h b/src/yuzu/bootmanager.h
index 514437359d..b24141fd9f 100644
--- a/src/yuzu/bootmanager.h
+++ b/src/yuzu/bootmanager.h
@@ -243,8 +243,6 @@ private:
     InputCommon::TasInput::TasState last_tas_state;
 
 #if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0)) && YUZU_USE_QT_MULTIMEDIA
-    static constexpr std::size_t CAMERA_WIDTH = 320;
-    static constexpr std::size_t CAMERA_HEIGHT = 240;
     bool is_virtual_camera;
     int pending_camera_snapshots;
     std::vector<u32> camera_data;