Flight controller drift issue

(This is a little long)

So I am working on a drone recently, and aim to control it using an Android device. I've read that it can be done using a Raspberry Pi and Multi Wii, but I couldn't find any crius multiwii boards for sale anywhere. So I decided to build one using a few guides. I used an Arduino nano and an MPU 6050 to get my work done, and have made all proper connections.

5V - VCC

GND - GND

A5 - SCL

A4 - SDA

I dumped the Multiwiii firmware on to the board, by making the proper adjustments in the code. And then I test the device using the Multiwiii calib tool provided. Everything is fine, the picture of the quad rotates as I move the assembly, but the issue is that the compass tilts in its own. I thought it maybe due to some lose contact, even after thoroughly soldering it remained the same. Essentially, the yaw and roll, and the compass indicator slowly drift even if the assembly is perfectly still. I'm unable to find a proper solution to this, as the drift should not happen in real flight. The drift is very small, +1° to the left or right for every 2-3 seconds. But over a period of time, it builds up to noticeable drift. I'm looking for a possible explanation of this, or a solution/suggestion, I'd really appreciate it.

Thanks

Typically there are two ways of computing orientation, either projection the gravity $\vec{g}$ measured by the IUM (if acceleration from motion is negligible) or integrating the gyros (if noise on the gyros is small).