The upper part of the image contains the original photo. Its output levels fall short of the available values, i.e. blacks are not as black and whites are not as white as they can be. We use the GcBitmap.AutoLevel() method to automatically adjust the levels so that the full output level interval is used. The result is rendered in the lower half of the image.