diff --git a/ArduPlane/ArduPlane.cpp b/ArduPlane/ArduPlane.cpp index b04978bf2b..5cc21d4a4f 100644 --- a/ArduPlane/ArduPlane.cpp +++ b/ArduPlane/ArduPlane.cpp @@ -737,13 +737,14 @@ void Plane::update_flight_mode(void) case QLAND: case QRTL: { // set nav_roll and nav_pitch using sticks - nav_roll_cd = channel_roll->norm_input() * roll_limit_cd; - nav_roll_cd = constrain_int32(nav_roll_cd, -roll_limit_cd, roll_limit_cd); + int16_t roll_limit = MIN(roll_limit_cd, quadplane.aparm.angle_max); + nav_roll_cd = channel_roll->norm_input() * roll_limit; + nav_roll_cd = constrain_int32(nav_roll_cd, -roll_limit, roll_limit); float pitch_input = channel_pitch->norm_input(); if (pitch_input > 0) { - nav_pitch_cd = pitch_input * aparm.pitch_limit_max_cd; + nav_pitch_cd = pitch_input * MIN(aparm.pitch_limit_max_cd, quadplane.aparm.angle_max); } else { - nav_pitch_cd = -(pitch_input * pitch_limit_min_cd); + nav_pitch_cd = pitch_input * MIN(-pitch_limit_min_cd, quadplane.aparm.angle_max); } nav_pitch_cd = constrain_int32(nav_pitch_cd, pitch_limit_min_cd, aparm.pitch_limit_max_cd.get()); break;