diff --git a/esoui/common/gamepad/genericheaders/genericheaders.lua b/esoui/common/gamepad/genericheaders/genericheaders.lua
index 7763d5e..e3737ba 100755
--- a/esoui/common/gamepad/genericheaders/genericheaders.lua
+++ b/esoui/common/gamepad/genericheaders/genericheaders.lua
@@ -300,16 +300,28 @@ function ZO_GamepadGenericHeader_SetDataLayout(control, layout)
     control.layout = layout
 end
 
+local g_currentBottomLeftHeader = DATA1HEADER
+
+local function ReflowHeaderDataPairIfNecessary(parentControl, dataControlIndex, dataHeaderControlIndex)
+    local controls = parentControl.controls
+
+    local dataControl = controls[dataControlIndex]
+    if dataControl and dataControl:GetRight() > parentControl:GetRight() then
+        local dataHeaderControl = controls[dataHeaderControlIndex]
+        dataHeaderControl:ClearAnchors()
+        dataHeaderControl:SetAnchor(BOTTOMLEFT, controls[g_currentBottomLeftHeader], BOTTOMLEFT, 0, ROW_OFFSET_Y)
+        g_currentBottomLeftHeader = dataHeaderControlIndex
+    end
+end
+
 local function ContentHeaderDataPairsLinkedReflow(control)
     control.layout = nil
     ZO_GamepadGenericHeader_SetDataLayout(control, ZO_GAMEPAD_HEADER_LAYOUTS.CONTENT_HEADER_DATA_PAIRS_LINKED)
-    local controls = control.controls
-    local data4Control = controls[ZO_GAMEPAD_HEADER_CONTROLS.DATA4]
-    if data4Control and data4Control:GetRight() > control:GetRight() then
-        local data4HeaderControl = controls[ZO_GAMEPAD_HEADER_CONTROLS.DATA4HEADER]
-        data4HeaderControl:ClearAnchors()
-        data4HeaderControl:SetAnchor(BOTTOMLEFT, controls[DATA1HEADER], BOTTOMLEFT, 0, ROW_OFFSET_Y)
-    end
+    g_currentBottomLeftHeader = DATA1HEADER    -- Reset the bottom left header value
+
+    ReflowHeaderDataPairIfNecessary(control, DATA2, DATA2HEADER)
+    ReflowHeaderDataPairIfNecessary(control, DATA3, DATA3HEADER)
+    ReflowHeaderDataPairIfNecessary(control, DATA4, DATA4HEADER)
 end
 
 local SCREEN_HEADER_REFLOW_FUNCS = {}