diff --git a/libmat2/images.py b/libmat2/images.py
index 03cecd33c1cc1e823930205c36db189571065d72..153a83d3b21c1c8769b2454e614afdbf837cccf9 100644
--- a/libmat2/images.py
+++ b/libmat2/images.py
@@ -6,7 +6,7 @@ import cairo
 
 import gi
 gi.require_version('GdkPixbuf', '2.0')
-from gi.repository import GdkPixbuf
+from gi.repository import GdkPixbuf, GLib
 
 from . import exiftool
 
@@ -50,15 +50,21 @@ class GdkPixbufAbstractParser(exiftool.ExiftoolParser):
 
     def __init__(self, filename):
         super().__init__(filename)
-        if imghdr.what(filename) != self._type:  # better safe than sorry
+        # we can't use imghdr here because of https://bugs.python.org/issue28591
+        try:
+            GdkPixbuf.Pixbuf.new_from_file(self.filename)
+        except GLib.GError:
             raise ValueError
 
     def remove_all(self) -> bool:
+        if self.lightweight_cleaning:
+            return self._lightweight_cleanup()
+
         _, extension = os.path.splitext(self.filename)
         pixbuf = GdkPixbuf.Pixbuf.new_from_file(self.filename)
         if extension.lower() == '.jpg':
             extension = '.jpeg'  # gdk is picky
-        pixbuf.savev(self.output_filename, extension[1:], [], [])
+        pixbuf.savev(self.output_filename, type=extension[1:], option_keys=[], option_values=[])
         return True
 
 
diff --git a/tests/test_lightweigh_cleaning.py b/tests/test_lightweigh_cleaning.py
index 7af31adf9f1a328cbe338f898dd171494433e25a..5fd7ad691c3f6668b88589eba81d356c738cfd6e 100644
--- a/tests/test_lightweigh_cleaning.py
+++ b/tests/test_lightweigh_cleaning.py
@@ -4,7 +4,7 @@ import unittest
 import shutil
 import os
 
-from libmat2 import pdf, images
+from libmat2 import pdf, images, torrent
 
 class TestLightWeightCleaning(unittest.TestCase):
     def test_pdf(self):
@@ -63,3 +63,20 @@ class TestLightWeightCleaning(unittest.TestCase):
 
         os.remove('./tests/data/clean.jpg')
         os.remove('./tests/data/clean.cleaned.jpg')
+
+    def test_torrent(self):
+        shutil.copy('./tests/data/dirty.torrent', './tests/data/clean.torrent')
+        p = torrent.TorrentParser('./tests/data/clean.torrent')
+
+        meta = p.get_meta()
+        self.assertEqual(meta['created by'], b'mktorrent 1.0')
+
+        p.lightweight_cleaning = True
+        ret = p.remove_all()
+        self.assertTrue(ret)
+
+        p = torrent.TorrentParser('./tests/data/clean.cleaned.torrent')
+        self.assertEqual(p.get_meta(), {})
+
+        os.remove('./tests/data/clean.torrent')
+        os.remove('./tests/data/clean.cleaned.torrent')