diff --git a/include/libcamera/controls.h b/include/libcamera/controls.h
index da73e41848..e4d5d13a2c 100644
--- a/include/libcamera/controls.h
+++ b/include/libcamera/controls.h
@@ -26,7 +26,7 @@ namespace libcamera {
 
 class ControlValidator;
 
-enum ControlType {
+enum ControlType : uint8_t {
 	ControlTypeNone,
 	ControlTypeBool,
 	ControlTypeByte,
@@ -242,9 +242,9 @@ public:
 		     std::size_t numElements = 1);
 
 private:
-	ControlType type_ : 8;
+	ControlType type_;
 	bool isArray_;
-	std::size_t numElements_ : 32;
+	uint32_t numElements_;
 	union {
 		uint64_t internal;
 		void *external;
