I suspect the "&& ! mExteriorPath.isEmpty() " criteria should not be here - see my comment below about features falling outside the canvas extent. Removing this check fixes the issue for me.