diff -rupN a/plug-ins/common/file-tiff-load.c b/plug-ins/common/file-tiff-load.c
--- a/plug-ins/common/file-tiff-load.c	Tue Apr  3 17:36:28 2012
+++ b/plug-ins/common/file-tiff-load.c	Tue May  1 16:54:03 2012
@@ -70,7 +70,6 @@
 
 #include "libgimp/stdplugins-intl.h"
 
-
 #define LOAD_PROC      "file-tiff-load"
 #define PLUG_IN_BINARY "file-tiff-load"
 #define PLUG_IN_ROLE   "gimp-file-tiff-load"
@@ -281,27 +280,14 @@ run (const gchar      *name,
     {
       const gchar *filename = param[1].data.d_string;
       TIFF        *tif      = NULL;
-      gint         fd;
-
-      fd = g_open (filename, O_RDONLY | _O_BINARY, 0);
 
-      if (fd == -1)
-        {
-          g_set_error (&error, G_FILE_ERROR, g_file_error_from_errno (errno),
-                       _("Could not open '%s' for reading: %s"),
-                       gimp_filename_to_utf8 (filename), g_strerror (errno));
-
-          status = GIMP_PDB_EXECUTION_ERROR;
-        }
-      else
-        {
-          tif = TIFFFdOpen (fd, filename, "r");
-        }
+      tif = TIFFOpen (filename, "r");
 
       if (tif)
         {
           gimp_get_data (LOAD_PROC, &target);
 
+
           pages.n_pages = pages.o_pages = TIFFNumberOfDirectories (tif);
 
           if (pages.n_pages == 0)
@@ -365,11 +351,12 @@ run (const gchar      *name,
             }
 
           TIFFClose (tif);
-          close (fd);
         }
       else
         {
-          close (fd);
+          g_set_error (&error, G_FILE_ERROR, g_file_error_from_errno (errno),
+                       _("Could not open '%s' for reading: %s"),
+                       gimp_filename_to_utf8 (filename), g_strerror (errno));
           status = GIMP_PDB_EXECUTION_ERROR;
         }
     }
diff -rupN a/plug-ins/common/file-tiff-save.c b/plug-ins/common/file-tiff-save.c
--- a/plug-ins/common/file-tiff-save.c	Tue Apr  3 17:36:28 2012
+++ b/plug-ins/common/file-tiff-save.c	Tue May  1 16:56:43 2012
@@ -657,7 +657,6 @@ save_image (const gchar  *filename,
   GimpPixelRgn   pixel_rgn;
   gint           tile_height;
   gint           y, yend;
-  gint           fd;
   gboolean       is_bw    = FALSE;
   gboolean       invert   = TRUE;
   const guchar   bw_map[] = { 0, 0, 0, 255, 255, 255 };
@@ -676,9 +675,8 @@ save_image (const gchar  *filename,
   tile_height = gimp_tile_height ();
   rowsperstrip = tile_height;
 
-  fd = g_open (filename, O_CREAT | O_TRUNC | O_WRONLY | _O_BINARY, 0666);
-
-  if (fd == -1)
+  tif = TIFFOpen (filename, "w");
+  if (!tif)
     {
       g_set_error (error, G_FILE_ERROR, g_file_error_from_errno (errno),
                    _("Could not open '%s' for writing: %s"),
@@ -686,8 +684,6 @@ save_image (const gchar  *filename,
       return FALSE;
     }
 
-  tif = TIFFFdOpen (fd, filename, "w");
-
   TIFFSetWarningHandler (tiff_warning);
   TIFFSetErrorHandler (tiff_error);
 
@@ -1034,7 +1030,6 @@ save_image (const gchar  *filename,
 
   TIFFFlushData (tif);
   TIFFClose (tif);
-  close (fd);
 
   gimp_progress_update (1.0);
 
