Поверните изображение на небольшое количество градусов

Иногда, когда я фотографирую прямоугольный объект, он получается повернутым на небольшое количество градусов (менее 5 или около того).

Я могу создать пространство, в котором прямоугольник не является белым или чем-то еще, но как я могу выбрать непрямоугольник (в том смысле, что он не совпадает с четырьмя углами в девяносто градусов, которые мне даны, когда я использую инструмент прямоугольного выбора), и повернуть его на это небольшое количество градусов?

Кроме того, если бы я мог "растянуть" один конец прямоугольника, потому что он перекосился, чтобы соответствовать высоте другого, это было бы здорово. Я понимаю, что будет некоторая потеря разрешения, если он сделает это таким образом (хотя столь же хорошим был бы способ "сжать" другую сторону, и это не снизило бы качество изображения).

Я довольно гибок в программе (GIMP, Paint.NET, Paint и Visio), но я открыт для загрузки любого бесплатного программного обеспечения, которое может это сделать.