First, make sure you have run a thermal calibration. After that do a gyro calibration again (probably only affective for Revo class).
Then, I would hand tune the yaw PID with yaw set to Rate, not AxisLock. You may need more "I" term to make it hold better.
Next, make sure you have yaw set to AxisLock (FMS setup). You might increase the AxisLock hold angle (I forget what it is called). I think these settings are in the Stabilization page IIRC.
Default says to do gyro bias at power up and again at arming, so it must be sitting on the ground (not in your hand) when you arm it or the tiniest motion of your hand will cause drift.