Is it redrawing the gradient but incorrectly? If so it is probably because you are using the clip rectangle to calculate the gradient as well as which part to redraw. Try changing the code like so
gr1 = New System.Drawing.Drawing2D.LinearGradientBrush( _
New Point(0, 0), New Point(0, pevent.ClipRectangle.Height), _
Me.BackColor, Me.BackColor2)
'change to
gr1 = New System.Drawing.Drawing2D.LinearGradientBrush( _
New Point(0, 0), New Point(Me.Height, Me.Width), _
Me.BackColor, Me._BackColor2)
and see if that helps.