MouseWheel Event With Picturebox?
Windows doesn't send the mouse scroll message to the control that's hovered, it goes to the control with the focus. You already know how to fix the focus.
This behavior is getting unintuitive because of the way browsers and Office programs work. You'll find code to alter this in my answer in this thread. Beware that it works on any window in your app. You'll have to add filtering on the handle value if that's undesirable.
UPDATE: this behavior was changed in Win10. It has a new system setting named "Scroll inactive windows when I hover over them", turned on by default. So focus no longer matters and it now works very similar to way it behaves in a browser. Testing your app is important, you can see what happens on an older version of Windows by temporarily disabling the system option.
This answer explains how to do it. In short, create a MouseEnter event on the picture-box that just focuses the picture-box. Then the picture-box will receive MouseWheel events just fine.