paint a scrollbar (DScrollPanel/DPanelList)

please excuse the messy code:

[lua]local DListX = vgui.Create(“DScrollPanel”,DMain)
DListX:SetPos(25,47)
DListX:SetSize(DMain:GetWide()-300,DMain:GetTall()-72)
DListX:SetPadding(0)
DListX.Paint = function(self, w, h)
draw.RoundedBox(0,0,0,w,h,Color(40, 40, 40, 255))
end

local ScrollBar = DListX:GetVBar();

ScrollBar.btnUp.Paint = function(self, w, h)
    draw.RoundedBox(0,0,0,w,h,Color(40, 40, 40, 255))
end

ScrollBar.btnDown.Paint = function(self, w, h)
    draw.RoundedBox(0,0,0,w,h,Color(40, 40, 40, 255))
end

ScrollBar.btnGrip.Paint = function(self, w, h)
    draw.RoundedBox(0,0,0,w,h,Color(35, 35, 35, 255))
end

local DList = vgui.Create("DPanelList",DListX)
DList:SetPos(0, 0)
DList:SetSize(DMain:GetWide()-300,DMain:GetTall()-72)
DList:SetPadding(0)
DList:SetSpacing(0)
DList:EnableVerticalScrollbar(true)
DList.Paint = function(self, w, h)
	draw.RoundedBox(0,0,0,w,h,Color(40, 40, 40, 255))
end
DListX:AddItem(DList)[/lua]

it’s not working right, i mean it looks fine except that if i removed enable vertical scrollbar on the dpanellist it’s unscrollable, if i enable it then the scrollbar is not the one from dscrollpanel which i want to paint. how do i get this to work right? i want it like a normal dpanellist but with a paintable scroll bar.