The very first thing I would do is re-calibrate the accelerometers. To prepare for this you need to get the aircraft PERFECTLY LEVEL.
To do this I put a small round spirit level on the Pixhawk and I use playing cards to shim the landing gear until the bubble is dead center. At this point I connect the Pixhawk to Mission Planner via USB and open the accelerometer calibration page. Before you start the calibration verify the Pixhawk is level. Shim the landing gear as necessary and start the calibration.
With the accelerometer calibration completed the next step is to run the radio’s internal stick/switch/pot calibration and then verify that all endpoint/subrtim/trim settings are at the factory defaults. When that is competed run the Radio Calibration in Mission Planner to calibrate the radio to Pixhawk.
With these calibrations completed its time to fly so we can run Auto Trim. Install the battery and verify the aircraft is statically balanced in both Roll and Pitch.
During the Auto Trim procedure YOU MUST FLY/HOVER THE AIRCRAFT. You cannot rely on AltHold or Stabilize. Stabilize should still be active, but Stabilize does not counter random drift in altitude or position. That is your job.
Once you have saved the trims we are going to “teach” Pixhawk where hover throttle is, so take off again and establish a hover out of ground effect and then switch to AltHold.
Things can get a little dicey here, so pay attention and be ready to switch back to Stabilize. The basic idea is that we want to fly around in AltHold and let Pixhawk learn where hover throttle is. If you do this right the net result is you can put the aircraft into a hover, switch to AltHold, and then switch back to Stabilize and the aircraft will not move in altitude. Another benefit when the aircraft is in a hover the throttle will be at Mid-Stick.
BTW, I read you post about testing AltHold with no props on. To be frank, that was a complete and utter waste of time.
When you use the radio to arm the motors, the PID controllers are active and when you raise the throttle the PID controllers are expecting the aircraft to be in flight when it actually isn’t. As a consequence the PID controllers get “stupid” and make the motors do strange and unpredictable things.
The only time bench testing motors with the props off is valid is when you run Motor Test under Optional Hardware.
And finally, post some data flash logs so we can see what is going on…