I had tons of these problems with overlapping textures until I found out that the best way to get around it is to stack frames ontop of each other. You do not have to care of the framelevel or strata in most cases. The order in which you create the frames is sufficient.
For statusbars I mostly use sth like this (but I'm texture heavy...)
1) "bar" layer ... frame of type FRAME with the background textures for the bar, parented to UIParent
2) "statusbar" layer frame of type STATUSBAR with statusbar textures and statusbar background, parented to bar
3) "gloss" layer of type FRAME with every highlight texture I may need + fontstrings, parented to statusbar
This would look like
Code:
local bar = CreateFrame("Frame", nil, UIParent)
local statusbar = CreateFrame("Statusbar", nil, bar)
local gloss = CreateFrame("Frame", nil, statusbar)
Textures on a specific layer can be stacked very easily via:
Code:
local t = bar:CreateTexture(nil,"BACKGROUND",nil,-8)
"BACKGROUND" is always sufficient since you can have texture levels from -8 to sth like 4. That is more that enough.
If you cannot do frame stacking another solution is to do sth like this:
Code:
gloss:SetFrameLevel(max(frame1:GetFrameLevel()+1,frame2:GetFrameLevel()+1))
But normally frame stacking is sufficient.