diff --git a/imgui.cpp b/imgui.cpp
index 11d6d82..bb94bdd 100644
--- a/imgui.cpp
+++ b/imgui.cpp
@@ -5822,7 +5822,7 @@
         window->DC.ParentLayoutType = parent_window ? parent_window->DC.LayoutType : ImGuiLayoutType_Vertical;
         window->DC.FocusCounterRegular = window->DC.FocusCounterTabStop = -1;
 
-        window->DC.ItemFlags = parent_window ? parent_window->DC.ItemFlags : (ImGuiItemFlags)ImGuiItemFlags_Default_;
+        window->DC.ItemFlags = parent_window ? parent_window->DC.ItemFlags : ImGuiItemFlags_Default_;
         window->DC.ItemWidth = window->ItemWidthDefault;
         window->DC.TextWrapPos = -1.0f; // disabled
         window->DC.ItemFlagsStack.resize(0);
diff --git a/imgui.h b/imgui.h
index 77a0953..c090ed7 100644
--- a/imgui.h
+++ b/imgui.h
@@ -739,7 +739,7 @@
 //-----------------------------------------------------------------------------
 
 // Flags for ImGui::Begin()
-enum ImGuiWindowFlags_
+enum ImGuiWindowFlags_ : unsigned int
 {
     ImGuiWindowFlags_None                   = 0,
     ImGuiWindowFlags_NoTitleBar             = 1 << 0,   // Disable title-bar
@@ -780,7 +780,7 @@
 };
 
 // Flags for ImGui::InputText()
-enum ImGuiInputTextFlags_
+enum ImGuiInputTextFlags_ : unsigned int
 {
     ImGuiInputTextFlags_None                = 0,
     ImGuiInputTextFlags_CharsDecimal        = 1 << 0,   // Allow 0123456789.+-*/
@@ -808,7 +808,7 @@
 };
 
 // Flags for ImGui::TreeNodeEx(), ImGui::CollapsingHeader*()
-enum ImGuiTreeNodeFlags_
+enum ImGuiTreeNodeFlags_ : unsigned int
 {
     ImGuiTreeNodeFlags_None                 = 0,
     ImGuiTreeNodeFlags_Selected             = 1 << 0,   // Draw as selected
@@ -830,7 +830,7 @@
 };
 
 // Flags for ImGui::Selectable()
-enum ImGuiSelectableFlags_
+enum ImGuiSelectableFlags_ : unsigned int
 {
     ImGuiSelectableFlags_None               = 0,
     ImGuiSelectableFlags_DontClosePopups    = 1 << 0,   // Clicking this don't close parent popup window
@@ -841,7 +841,7 @@
 };
 
 // Flags for ImGui::BeginCombo()
-enum ImGuiComboFlags_
+enum ImGuiComboFlags_ : unsigned int
 {
     ImGuiComboFlags_None                    = 0,
     ImGuiComboFlags_PopupAlignLeft          = 1 << 0,   // Align the popup toward the left by default
@@ -855,7 +855,7 @@
 };
 
 // Flags for ImGui::BeginTabBar()
-enum ImGuiTabBarFlags_
+enum ImGuiTabBarFlags_ : unsigned int
 {
     ImGuiTabBarFlags_None                           = 0,
     ImGuiTabBarFlags_Reorderable                    = 1 << 0,   // Allow manually dragging tabs to re-order them + New tabs are appended at the end of list
@@ -871,7 +871,7 @@
 };
 
 // Flags for ImGui::BeginTabItem()
-enum ImGuiTabItemFlags_
+enum ImGuiTabItemFlags_ : unsigned int
 {
     ImGuiTabItemFlags_None                          = 0,
     ImGuiTabItemFlags_UnsavedDocument               = 1 << 0,   // Append '*' to title without affecting the ID, as a convenience to avoid using the ### operator. Also: tab is selected on closure and closure is deferred by one frame to allow code to undo it without flicker.
@@ -881,7 +881,7 @@
 };
 
 // Flags for ImGui::IsWindowFocused()
-enum ImGuiFocusedFlags_
+enum ImGuiFocusedFlags_ : unsigned int
 {
     ImGuiFocusedFlags_None                          = 0,
     ImGuiFocusedFlags_ChildWindows                  = 1 << 0,   // IsWindowFocused(): Return true if any children of the window is focused
@@ -893,7 +893,7 @@
 // Flags for ImGui::IsItemHovered(), ImGui::IsWindowHovered()
 // Note: if you are trying to check whether your mouse should be dispatched to imgui or to your app, you should use the 'io.WantCaptureMouse' boolean for that. Please read the FAQ!
 // Note: windows with the ImGuiWindowFlags_NoInputs flag are ignored by IsWindowHovered() calls.
-enum ImGuiHoveredFlags_
+enum ImGuiHoveredFlags_ : unsigned int
 {
     ImGuiHoveredFlags_None                          = 0,        // Return true if directly over the item/window, not obstructed by another window, not obstructed by an active popup or modal blocking inputs under them.
     ImGuiHoveredFlags_ChildWindows                  = 1 << 0,   // IsWindowHovered() only: Return true if any children of the window is hovered
@@ -909,7 +909,7 @@
 };
 
 // Flags for ImGui::BeginDragDropSource(), ImGui::AcceptDragDropPayload()
-enum ImGuiDragDropFlags_
+enum ImGuiDragDropFlags_ : unsigned int
 {
     ImGuiDragDropFlags_None                         = 0,
     // BeginDragDropSource() flags
@@ -1021,7 +1021,7 @@
 };
 
 // Configuration flags stored in io.ConfigFlags. Set by user/application.
-enum ImGuiConfigFlags_
+enum ImGuiConfigFlags_ : unsigned int
 {
     ImGuiConfigFlags_None                   = 0,
     ImGuiConfigFlags_NavEnableKeyboard      = 1 << 0,   // Master keyboard navigation enable flag. NewFrame() will automatically fill io.NavInputs[] based on io.KeysDown[].
@@ -1037,7 +1037,7 @@
 };
 
 // Back-end capabilities flags stored in io.BackendFlags. Set by imgui_impl_xxx or custom back-end.
-enum ImGuiBackendFlags_
+enum ImGuiBackendFlags_ : unsigned int
 {
     ImGuiBackendFlags_None                  = 0,
     ImGuiBackendFlags_HasGamepad            = 1 << 0,   // Back-end Platform supports gamepad and currently has one connected.
@@ -1144,7 +1144,7 @@
 };
 
 // Flags for ColorEdit3() / ColorEdit4() / ColorPicker3() / ColorPicker4() / ColorButton()
-enum ImGuiColorEditFlags_
+enum ImGuiColorEditFlags_ : unsigned int
 {
     ImGuiColorEditFlags_None            = 0,
     ImGuiColorEditFlags_NoAlpha         = 1 << 1,   //              // ColorEdit, ColorPicker, ColorButton: ignore Alpha component (will only read 3 components from the input pointer).
@@ -1877,7 +1877,7 @@
     IMGUI_API void              SetCurrentChannel(ImDrawList* draw_list, int channel_idx);
 };
 
-enum ImDrawCornerFlags_
+enum ImDrawCornerFlags_ : unsigned int
 {
     ImDrawCornerFlags_None      = 0,
     ImDrawCornerFlags_TopLeft   = 1 << 0, // 0x1
@@ -1891,7 +1891,7 @@
     ImDrawCornerFlags_All       = 0xF     // In your function calls you may use ~0 (= all bits sets) instead of ImDrawCornerFlags_All, as a convenience
 };
 
-enum ImDrawListFlags_
+enum ImDrawListFlags_ : unsigned int
 {
     ImDrawListFlags_None             = 0,
     ImDrawListFlags_AntiAliasedLines = 1 << 0,  // Lines are anti-aliased (*2 the number of triangles for 1.0f wide line, otherwise *3 the number of triangles)
@@ -2095,7 +2095,7 @@
     bool IsPacked() const           { return X != 0xFFFF; }
 };
 
-enum ImFontAtlasFlags_
+enum ImFontAtlasFlags_ : unsigned int
 {
     ImFontAtlasFlags_None               = 0,
     ImFontAtlasFlags_NoPowerOfTwoHeight = 1 << 0,   // Don't round the height to next power of two
diff --git a/imgui_draw.cpp b/imgui_draw.cpp
index 1c30c7b..62cf269 100644
--- a/imgui_draw.cpp
+++ b/imgui_draw.cpp
@@ -364,7 +364,7 @@
     CmdBuffer.resize(0);
     IdxBuffer.resize(0);
     VtxBuffer.resize(0);
-    Flags = _Data ? _Data->InitialFlags : (ImDrawListFlags)ImDrawListFlags_None;
+    Flags = _Data ? _Data->InitialFlags : ImDrawListFlags_None;
     _VtxCurrentOffset = 0;
     _VtxCurrentIdx = 0;
     _VtxWritePtr = NULL;
diff --git a/imgui_internal.h b/imgui_internal.h
index 20394b6..f3d83bc 100644
--- a/imgui_internal.h
+++ b/imgui_internal.h
@@ -413,7 +413,7 @@
 // Misc data structures
 //-----------------------------------------------------------------------------
 
-enum ImGuiButtonFlags_
+enum ImGuiButtonFlags_ : unsigned int
 {
     ImGuiButtonFlags_None                   = 0,
     ImGuiButtonFlags_Repeat                 = 1 << 0,   // hold to repeat
@@ -435,19 +435,19 @@
     ImGuiButtonFlags_PressedOnMask_         = ImGuiButtonFlags_PressedOnClick | ImGuiButtonFlags_PressedOnClickRelease | ImGuiButtonFlags_PressedOnClickReleaseAnywhere | ImGuiButtonFlags_PressedOnRelease | ImGuiButtonFlags_PressedOnDoubleClick | ImGuiButtonFlags_PressedOnDragDropHold
 };
 
-enum ImGuiSliderFlags_
+enum ImGuiSliderFlags_ : unsigned int
 {
     ImGuiSliderFlags_None                   = 0,
     ImGuiSliderFlags_Vertical               = 1 << 0
 };
 
-enum ImGuiDragFlags_
+enum ImGuiDragFlags_ : unsigned int
 {
     ImGuiDragFlags_None                     = 0,
     ImGuiDragFlags_Vertical                 = 1 << 0
 };
 
-enum ImGuiColumnsFlags_
+enum ImGuiColumnsFlags_ : unsigned int
 {
     // Default: 0
     ImGuiColumnsFlags_None                  = 0,
@@ -459,7 +459,7 @@
 };
 
 // Extend ImGuiSelectableFlags_
-enum ImGuiSelectableFlagsPrivate_
+enum ImGuiSelectableFlagsPrivate_ : unsigned int
 {
     // NB: need to be in sync with last value of ImGuiSelectableFlags_
     ImGuiSelectableFlags_NoHoldingActiveID  = 1 << 20,
@@ -471,12 +471,12 @@
 };
 
 // Extend ImGuiTreeNodeFlags_
-enum ImGuiTreeNodeFlagsPrivate_
+enum ImGuiTreeNodeFlagsPrivate_ : unsigned int
 {
     ImGuiTreeNodeFlags_ClipLabelForTrailingButton = 1 << 20
 };
 
-enum ImGuiSeparatorFlags_
+enum ImGuiSeparatorFlags_ : unsigned int
 {
     ImGuiSeparatorFlags_None                = 0,
     ImGuiSeparatorFlags_Horizontal          = 1 << 0,   // Axis default to current layout type, so generally Horizontal unless e.g. in a menu bar
@@ -486,7 +486,7 @@
 
 // Transient per-window flags, reset at the beginning of the frame. For child window, inherited from parent on first Begin().
 // This is going to be exposed in imgui.h when stabilized enough.
-enum ImGuiItemFlags_
+enum ImGuiItemFlags_ : unsigned int
 {
     ImGuiItemFlags_None                     = 0,
     ImGuiItemFlags_NoTabStop                = 1 << 0,  // false
@@ -500,7 +500,7 @@
 };
 
 // Storage for LastItem data
-enum ImGuiItemStatusFlags_
+enum ImGuiItemStatusFlags_ : unsigned int
 {
     ImGuiItemStatusFlags_None               = 0,
     ImGuiItemStatusFlags_HoveredRect        = 1 << 0,
@@ -520,7 +520,7 @@
 #endif
 };
 
-enum ImGuiTextFlags_
+enum ImGuiTextFlags_ : unsigned int
 {
     ImGuiTextFlags_None = 0,
     ImGuiTextFlags_NoWidthForLargeClippedText = 1 << 0
@@ -578,7 +578,7 @@
     ImGuiInputReadMode_RepeatFast
 };
 
-enum ImGuiNavHighlightFlags_
+enum ImGuiNavHighlightFlags_ : unsigned int
 {
     ImGuiNavHighlightFlags_None         = 0,
     ImGuiNavHighlightFlags_TypeDefault  = 1 << 0,
@@ -587,7 +587,7 @@
     ImGuiNavHighlightFlags_NoRounding   = 1 << 3
 };
 
-enum ImGuiNavDirSourceFlags_
+enum ImGuiNavDirSourceFlags_ : unsigned int
 {
     ImGuiNavDirSourceFlags_None         = 0,
     ImGuiNavDirSourceFlags_Keyboard     = 1 << 0,
@@ -595,7 +595,7 @@
     ImGuiNavDirSourceFlags_PadLStick    = 1 << 2
 };
 
-enum ImGuiNavMoveFlags_
+enum ImGuiNavMoveFlags_ : unsigned int
 {
     ImGuiNavMoveFlags_None                  = 0,
     ImGuiNavMoveFlags_LoopX                 = 1 << 0,   // On failed request, restart from opposite side
@@ -888,7 +888,7 @@
     void Clear()         { Window = NULL; ID = FocusScopeId = 0; DistBox = DistCenter = DistAxial = FLT_MAX; RectRel = ImRect(); }
 };
 
-enum ImGuiNextWindowDataFlags_
+enum ImGuiNextWindowDataFlags_ : unsigned int
 {
     ImGuiNextWindowDataFlags_None               = 0,
     ImGuiNextWindowDataFlags_HasPos             = 1 << 0,
@@ -922,7 +922,7 @@
     inline void ClearFlags()    { Flags = ImGuiNextWindowDataFlags_None; }
 };
 
-enum ImGuiNextItemDataFlags_
+enum ImGuiNextItemDataFlags_ : unsigned int
 {
     ImGuiNextItemDataFlags_None     = 0,
     ImGuiNextItemDataFlags_HasWidth = 1 << 0,
diff --git a/imgui_widgets.cpp b/imgui_widgets.cpp
index 9faa71c..124594d 100644
--- a/imgui_widgets.cpp
+++ b/imgui_widgets.cpp
@@ -4507,9 +4507,9 @@
 
     // Read stored options
     if (!(flags & ImGuiColorEditFlags__PickerMask))
-        flags |= ((g.ColorEditOptions & ImGuiColorEditFlags__PickerMask) ? g.ColorEditOptions : (ImGuiColorEditFlags)ImGuiColorEditFlags__OptionsDefault) & ImGuiColorEditFlags__PickerMask;
+        flags |= ((g.ColorEditOptions & ImGuiColorEditFlags__PickerMask) ? g.ColorEditOptions : ImGuiColorEditFlags__OptionsDefault) & ImGuiColorEditFlags__PickerMask;
     if (!(flags & ImGuiColorEditFlags__InputMask))
-        flags |= ((g.ColorEditOptions & ImGuiColorEditFlags__InputMask) ? g.ColorEditOptions : (ImGuiColorEditFlags)ImGuiColorEditFlags__OptionsDefault) & ImGuiColorEditFlags__InputMask;
+        flags |= ((g.ColorEditOptions & ImGuiColorEditFlags__InputMask) ? g.ColorEditOptions : ImGuiColorEditFlags__OptionsDefault) & ImGuiColorEditFlags__InputMask;
     IM_ASSERT(ImIsPowerOfTwo(flags & ImGuiColorEditFlags__PickerMask)); // Check that only 1 is selected
     IM_ASSERT(ImIsPowerOfTwo(flags & ImGuiColorEditFlags__InputMask));  // Check that only 1 is selected
     if (!(flags & ImGuiColorEditFlags_NoOptions))
