Did you do the "in the air" level? I call it this way because the real name is confusing for some.
Most people do the "bench" level function, this tells to the APM what is suppose to be square and level but we all know that in the air it's a bit different. One motor can be a bit stronger, something is not square (arms)... the Center of Gravity not really center. The APM will compensate for all this but it's not optimal flight and stability.
the super quick way to get it done is to Arm your motors as usual then hold the arming position for an extra 20-25 seconds. you will notice the ABC led on the APM will flash differently.
You are now in "auto trim" mode. This means you have 45 seconds to fly the copter above 4 feet (above ground effect) and keep it in perfect steady place. (I STRONGLY suggest you practice before so you know where on your radio is the sweet spot for perfect stable in place flight, for example it could be 2mm up on roll and 1mm left on pitch... learn that sweet spot and then land and arm for 20 more seconds)
So now that you are in this mode (only last 45 or so seconds) the APM will "learn" what "trim" (dont trim radio!!) to apply in air and will zero in it's settings. If you are not in a wind free environment it will not be perfect.
After the 45 seconds you will be back in normal mode of operation so you will see the copter going in that direction that you were holding. Land and try to take off (normally, in your Stab mode)
the experience should be way better. if not, you land again, hold again arming for 20 sec. trim in the air again for 45 seconds and land, test and repeat.
It only takes 2-3 pass usually for me to get it very very good.