I cannot reproduce it without your layers, but I think you can solve that like this.
At first please add a breakpoint here:
foreach (Layer layer in layeroverlay.Layers)
And you can check whether your Aircraft Layer is the last one which is drawn to canvas. If it's not the last one, just adjust the loop order.
If it's the last one but the result is still incorrect, you can ignore this layer in the loop. After export the result into an image(in memory), then create a new canvas based on the image and draw based on it for the layer.
I think you can solve it follow this way.