I'm assuming you have a reason for doing this, as I cannot think of one. You will always be running into problems trying to do this sort of stuff...

Sometimes only part of the form will be invalidated (need to be repainted), so only that part will change colour (probably the issue you are having with scrolling). This may also happen when another application is in front of yours and then is moved, uncovering part of your form. This is because windows is trying to optimise it's painting process.

There will also only ever be a maximum of *one* paint message on your apps message queue and it will be processed after all of the others, you have little control over that and hence little control over not only where, but also when the parts of the form will need to be repainted.

You will want to make sure the *whole* of the form is invalidated each time part of it needs to be redrawn, see Form.Invalidate(). However, I think it is not advisable to call that function in the forms Paint handler.

I suspect that there is many many more gotcha's with what you are trying to do...