Combined patches from git.
--- fltk1.3-1.3.2.orig/configure
+++ fltk1.3-1.3.2/configure
@@ -2682,10 +2682,10 @@ if test x$enable_shared = xyes; then
             GLDSONAME="libfltk_gl.so.$FL_API_VERSION"
             IMGDSONAME="libfltk_images.so.$FL_API_VERSION"
             CAIRODSONAME="libfltk_cairo.so.$FL_API_VERSION"
-            DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ \$(LDLIBS) -shared -fPIC $DEBUGFLAG -o"
-	    if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/usr/lib64"; then
-		    DSOLINK="-Wl,-rpath,$libdir"
-            fi
+            DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ -shared -fPIC $DEBUGFLAG -o"
+#	    if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/usr/lib64"; then
+#		    DSOLINK="-Wl,-rpath,$libdir"
+#           fi
 	    ;;
 	AIX*)
             DSONAME="libfltk_s.a"
@@ -6158,8 +6158,8 @@ $as_echo "$as_me: WARNING: Cannot find s
 else
     ZLIBINC=""
     ZLIB=""
-    LIBS="-lz $LIBS"
-    IMAGELIBS="-lz $IMAGELIBS"
+    # LIBS="-lz $LIBS"
+    # IMAGELIBS="-lz $IMAGELIBS"
     STATICIMAGELIBS="-lz $STATICIMAGELIBS"
     $as_echo "#define HAVE_LIBZ 1" >>confdefs.h
 
@@ -6426,6 +6426,7 @@ $as_echo "$have_pthread" >&6; }
 		break
 	    fi
 	done
+	LIBS=$SAVELIBS
     fi
 fi
 
@@ -7442,12 +7443,12 @@ fi
 if test "x$ac_cv_header_GL_glu_h" = xyes; then :
   $as_echo "#define HAVE_GL_GLU_H 1" >>confdefs.h
 
-		if test x$ac_cv_lib_GL_glXMakeCurrent = xyes; then
-		    GLLIB="-lGLU $GLLIB"
-		fi
-		if test x$ac_cv_lib_MesaGL_glXMakeCurrent = xyes; then
-		    GLLIB="-lMesaGLU $GLLIB"
-		fi
+		# if test x$ac_cv_lib_GL_glXMakeCurrent = xyes; then
+		#     GLLIB="-lGLU $GLLIB"
+		# fi
+		# if test x$ac_cv_lib_MesaGL_glXMakeCurrent = xyes; then
+		#     GLLIB="-lMesaGLU $GLLIB"
+		# fi
 
 fi
 
@@ -7622,7 +7623,7 @@ if ${ac_cv_lib_Xft_XftDrawCreate+:} fals
   $as_echo_n "(cached) " >&6
 else
   ac_check_lib_save_LIBS=$LIBS
-LIBS="-lXft  $LIBS"
+LIBS="-lXft -lfontconfig $LIBS"
 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -7655,7 +7656,7 @@ $as_echo "$ac_cv_lib_Xft_XftDrawCreate"
 if test "x$ac_cv_lib_Xft_XftDrawCreate" = xyes; then :
   $as_echo "#define USE_XFT 1" >>confdefs.h
 
-			LIBS="-lXft $LIBS"
+			LIBS="-lXft -lfontconfig $LIBS"
 fi
 
 fi
@@ -8121,7 +8122,7 @@ _ACEOF
 
     else
 	cat >>confdefs.h <<_ACEOF
-#define FLTK_DOCDIR "$prefix/share/doc/fltk"
+#define FLTK_DOCDIR "$prefix/share/doc/fltk1.3-doc/HTML"
 _ACEOF
 
     fi
--- fltk1.3-1.3.2.orig/fltk-config.in
+++ fltk1.3-1.3.2/fltk-config.in
@@ -223,26 +223,27 @@ else
     includes=
 fi
 
-if test "$libdir" != /usr/lib -a "$libdir" != /usr/lib32; then
-    libs=-L$libdir
-else
-    libs=
-fi
+# if test "$libdir" != /usr/lib -a "$libdir" != /usr/lib32; then
+#     libs=-L$libdir
+# else
+#     libs=
+# fi
+libs=
 
 # Calculate needed libraries
 LDSTATIC="$libdir/libfltk.a $LDLIBS"
-LDLIBS="-lfltk$SHAREDSUFFIX $LDLIBS"
+LDLIBS="-lfltk$SHAREDSUFFIX -lX11"
 
 if test x$use_forms = xyes; then
     LDLIBS="-lfltk_forms$SHAREDSUFFIX $LDLIBS"
     LDSTATIC="$libdir/libfltk_forms.a $LDSTATIC"
 fi
 if test x$use_gl = xyes; then
-    LDLIBS="-lfltk_gl$SHAREDSUFFIX @GLLIB@ $LDLIBS"
+    LDLIBS="-lfltk_gl$SHAREDSUFFIX $LDLIBS"
     LDSTATIC="$libdir/libfltk_gl.a @GLLIB@ $LDSTATIC"
 fi
 if test x$use_images = xyes; then
-    LDLIBS="-lfltk_images$SHAREDSUFFIX $IMAGELIBS $LDLIBS"
+    LDLIBS="-lfltk_images$SHAREDSUFFIX $LDLIBS"
     LDSTATIC="$libdir/libfltk_images.a $STATICIMAGELIBS $LDSTATIC"
 fi
 
@@ -281,8 +282,8 @@ if test -n "$compile"; then
 
     post="$prog"
 
-    echo $CXX $ARCHFLAGS $includes $CXXFLAGS $debug -o "'$prog'" "'$compile'" $LDSTATIC
-    $CXX $ARCHFLAGS $includes $CXXFLAGS $debug -o "$prog" "$compile" $LDSTATIC || exit 1
+    echo $CXX $ARCHFLAGS $includes $CXXFLAGS $debug -o "'$prog'" "'$compile'" $LDLIBS
+    $CXX $ARCHFLAGS $includes $CXXFLAGS $debug -o "$prog" "$compile" $LDLIBS || exit 1
 fi
 
 if test -n "$post"; then
@@ -325,11 +326,11 @@ EOF
 fi
 
 if test "$echo_cflags" = "yes"; then
-    echo $includes $CFLAGS
+    echo "$includes $CFLAGS" | sed -e 's/ -[gO][^ ]*//g'
 fi
 
 if test "$echo_cxxflags" = "yes"; then
-    echo $includes $CXXFLAGS
+    echo "$includes $CXXFLAGS" | sed -e 's/ -[gO][^ ]*//g'
 fi
 
 if test "$echo_optim" = "yes"; then
--- fltk1.3-1.3.2.orig/configure.in
+++ fltk1.3-1.3.2/configure.in
@@ -271,10 +271,10 @@ if test x$enable_shared = xyes; then
             GLDSONAME="libfltk_gl.so.$FL_API_VERSION"
             IMGDSONAME="libfltk_images.so.$FL_API_VERSION"
             CAIRODSONAME="libfltk_cairo.so.$FL_API_VERSION"
-            DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ \$(LDLIBS) -shared -fPIC $DEBUGFLAG -o"
-	    if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/usr/lib64"; then
-		    DSOLINK="-Wl,-rpath,$libdir"
-            fi
+            DSOCOMMAND="\$(CXX) \$(DSOFLAGS) -Wl,-soname,\$@ -shared -fPIC $DEBUGFLAG -o"
+#	    if test "x$libdir" != "x/usr/lib" -a "x$libdir" != "x/usr/lib64"; then
+#		    DSOLINK="-Wl,-rpath,$libdir"
+#           fi
 	    ;;
 	AIX*)
             DSONAME="libfltk_s.a"
@@ -689,8 +689,8 @@ if test x$enable_localzlib = xyes -o x$s
 else
     ZLIBINC=""
     ZLIB=""
-    LIBS="-lz $LIBS"
-    IMAGELIBS="-lz $IMAGELIBS"
+    # LIBS="-lz $LIBS"
+    # IMAGELIBS="-lz $IMAGELIBS"
     STATICIMAGELIBS="-lz $STATICIMAGELIBS"
     AC_DEFINE(HAVE_LIBZ)
 fi
@@ -802,6 +802,7 @@ if test "x$enable_threads" != xno -a x$c
 		break
 	    fi
 	done
+	LIBS=$SAVELIBS
     fi
 fi
 
@@ -939,12 +940,12 @@ case $uname_GUI in
 	    )
 	    AC_CHECK_HEADER(GL/glu.h,
         	AC_DEFINE(HAVE_GL_GLU_H)
-		if test x$ac_cv_lib_GL_glXMakeCurrent = xyes; then
-		    GLLIB="-lGLU $GLLIB"
-		fi
-		if test x$ac_cv_lib_MesaGL_glXMakeCurrent = xyes; then
-		    GLLIB="-lMesaGLU $GLLIB"
-		fi
+		# if test x$ac_cv_lib_GL_glXMakeCurrent = xyes; then
+		#     GLLIB="-lGLU $GLLIB"
+		# fi
+		# if test x$ac_cv_lib_MesaGL_glXMakeCurrent = xyes; then
+		#     GLLIB="-lMesaGLU $GLLIB"
+		# fi
 	    )
 
 	    if test x$ac_cv_lib_GL_glXMakeCurrent != xyes -a x$ac_cv_lib_MesaGL_glXMakeCurrent != xyes; then
@@ -983,7 +984,7 @@ case $uname_GUI in
 		AC_CHECK_HEADER(X11/Xft/Xft.h,
 		    AC_CHECK_LIB(Xft, XftDrawCreate,
 			AC_DEFINE(USE_XFT)
-			LIBS="-lXft $LIBS"))
+			LIBS="-lXft -lfontconfig $LIBS", [], -lfontconfig))
 	    fi
 	fi
 
@@ -1298,7 +1299,7 @@ case $uname in
     if test x$prefix = xNONE; then
 	AC_DEFINE_UNQUOTED(FLTK_DOCDIR, "/usr/local/share/doc/fltk")
     else
-	AC_DEFINE_UNQUOTED(FLTK_DOCDIR, "$prefix/share/doc/fltk")
+	AC_DEFINE_UNQUOTED(FLTK_DOCDIR, "$prefix/share/doc/fltk1.3-doc/HTML")
     fi
     ;;
 esac
--- fltk1.3-1.3.2.orig/makeinclude.in
+++ fltk1.3-1.3.2/makeinclude.in
@@ -25,7 +25,7 @@ includedir	= @includedir@
 libdir		= @libdir@
 mandir		= @mandir@
 srcdir		= @srcdir@
-docdir		= $(datadir)/doc/fltk
+docdir		= $(datadir)/doc/fltk1.3-doc
 VPATH		= @srcdir@
 USEMMFILES  = @USEMMFILES@
 # programs we use...
@@ -131,7 +131,7 @@ INSTALL_DESKTOP	= @INSTALL_DESKTOP@
 UNINSTALL_DESKTOP = @UNINSTALL_DESKTOP@
 
 # Be quiet when building...
-.SILENT:
+#.SILENT:
 
 # Build commands and filename extensions...
 .SUFFIXES:	.0 .1 .3 .6 .c .cxx .mm .h .fl .man .o .z $(EXEEXT)
--- fltk1.3-1.3.2.orig/Makefile
+++ fltk1.3-1.3.2/Makefile
@@ -100,8 +100,8 @@ makeinclude: configure configh.in makein
 	touch config.h
 	chmod +x fltk-config
 
-configure: configure.in
-	autoconf
+# configure: configure.in
+# 	autoconf
 
 portable-dist:
 	epm -v -s fltk.xpm fltk
--- fltk1.3-1.3.2.orig/src/Makefile
+++ fltk1.3-1.3.2/src/Makefile
@@ -211,6 +211,9 @@ UTF8CFILES = \
 FLTKFLAGS = -DFL_LIBRARY
 include ../makeinclude
 
+CFLAGS   := $(CFLAGS:-fPIE=-fPIC)
+CXXFLAGS := $(CXXFLAGS:-fPIE=-fPIC)
+
 MMFILES = $(shell if test $(USEMMFILES) = Yes; then echo $(OBJCPPFILES); fi)
 
 OBJECTS =  $(MMFILES:.mm=.o) $(CPPFILES:.cxx=.o) $(CFILES:.c=.o) $(UTF8CFILES:.c=.o)
@@ -231,13 +234,13 @@ $(LIBNAME): $(OBJECTS)
 
 libfltk.so.1.3: $(OBJECTS)
 	echo $(DSOCOMMAND) $@ ...
-	$(DSOCOMMAND) $@ $(OBJECTS)
+	$(DSOCOMMAND) $@ $(OBJECTS) $(LDLIBS) -lpthread
 	$(RM) libfltk.so
 	$(LN) libfltk.so.1.3 libfltk.so
 
 libfltk.sl.1.3: $(OBJECTS)
 	echo $(DSOCOMMAND) $@ ...
-	$(DSOCOMMAND) $@ $(OBJECTS)
+	$(DSOCOMMAND) $@ $(OBJECTS) $(LDLIBS)
 	$(RM) libfltk.sl
 	$(LN) libfltk.sl.1.3 libfltk.sl
 
@@ -303,13 +306,13 @@ $(GLLIBNAME): $(GLOBJECTS)
 
 libfltk_gl.so.1.3: $(GLOBJECTS) libfltk.so.1.3
 	echo $(DSOCOMMAND) $@ ...
-	$(DSOCOMMAND) $@ $(GLOBJECTS) -L. -lfltk
+	$(DSOCOMMAND) $@ $(GLOBJECTS) -lGL -lX11 -ldl -L. -lfltk
 	$(RM) libfltk_gl.so
 	$(LN) libfltk_gl.so.1.3 libfltk_gl.so
 
 libfltk_gl.sl.1.3: $(GLOBJECTS) libfltk.sl.1.3
 	echo $(DSOCOMMAND) $@ ...
-	$(DSOCOMMAND) $@ $(GLOBJECTS) -L. -lfltk
+	$(DSOCOMMAND) $@ $(GLOBJECTS) -lGL -lX11 -ldl -L. -lfltk
 	$(RM) libfltk_gl.sl
 	$(LN) libfltk_gl.sl.1.3 libfltk_gl.sl
 
--- fltk1.3-1.3.2.orig/documentation/Makefile
+++ fltk1.3-1.3.2/documentation/Makefile
@@ -73,10 +73,10 @@ depend:
 
 install: $(MANPAGES)
 	echo "Installing documentation files in $(DESTDIR)$(docdir) ..."
-	-$(INSTALL_DIR) $(DESTDIR)$(docdir)
+	-$(INSTALL_DIR) $(DESTDIR)$(docdir)/HTML
 	if test -f html/index.html ; then \
 	  for file in html/* ; do \
-		$(INSTALL_DATA) $$file $(DESTDIR)$(docdir); \
+		$(INSTALL_DATA) $$file $(DESTDIR)$(docdir)/HTML; \
 	  done \
 	fi
 	if test -f fltk.pdf ; then \
--- fltk1.3-1.3.2.orig/cairo/Makefile
+++ fltk1.3-1.3.2/cairo/Makefile
@@ -19,6 +19,8 @@
 FLTKFLAGS = -DFL_LIBRARY
 include ../makeinclude
 
+CXXFLAGS := $(CXXFLAGS:-fPIE=-fPIC)
+
 #
 # Object files...
 #
@@ -39,13 +41,13 @@ $(CAIROLIBNAME): $(CAIROOBJECTS)
 
 libfltk_cairo.so.1.3: $(CAIROOBJECTS) ../src/libfltk.so.1.3
 	echo $(DSOCOMMAND) $@ ...
-	$(DSOCOMMAND) $@ $(CAIROOBJECTS) -L../src -lfltk
+	$(DSOCOMMAND) $@ $(CAIROOBJECTS) -L../src $(CAIROLIBS) -lfltk
 	$(RM) libfltk_cairo.so
 	$(LN) $(CAIRODSONAME) libfltk_cairo.so
 
 libfltk_cairo.sl.1.3: $(CAIROOBJECTS) ../src/libfltk.sl.1.3
 	echo $(DSOCOMMAND) $@ ...
-	$(DSOCOMMAND) $@ $(CAIROOBJECTS) -L../src -lfltk
+	$(DSOCOMMAND) $@ $(CAIROOBJECTS) -L../src $(CAIROLIBS) -lfltk
 	$(RM) libfltk_cairo.sl
 	$(LN) libfltk_cairo.sl.1.3 libfltk_cairo.sl
 
--- fltk1.3-1.3.2.orig/fluid/Makefile
+++ fltk1.3-1.3.2/fluid/Makefile
@@ -54,7 +54,9 @@ fluid$(EXEEXT):		$(OBJECTS) $(LIBNAME) $
 fluid-shared$(EXEEXT):	$(OBJECTS) ../src/$(DSONAME) ../src/$(FLDSONAME) \
 			../src/$(IMGDSONAME)
 	echo Linking $@...
-	$(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ $(OBJECTS) $(LINKSHARED) $(LDLIBS)
+	$(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ $(OBJECTS) \
+	    -L../src -Wl,-rpath-link,../src -lfltk_images -lfltk_forms -lfltk \
+	    -lpng -lX11
 
 clean:
 	-$(RM) *.o core.* *~ *.bck *.bck
--- fltk1.3-1.3.2.orig/test/Makefile
+++ fltk1.3-1.3.2/test/Makefile
@@ -18,6 +18,16 @@
 
 include ../makeinclude
 
+# Streamline dependencies
+GLDLIBS       = -lGL
+IMAGELIBS     =
+LDLIBS        =
+LINKFLTK      = -L../src -Wl,-rpath-link,../src -lfltk
+LINKFLTKFORMS = -L../src -Wl,-rpath-link,../src -lfltk_forms -lfltk
+LINKFLTKGL    = -L../src -Wl,-rpath-link,../src -lfltk_gl -lfltk
+LINKFLTKIMG   = -L../src -Wl,-rpath-link,../src -lfltk_images -lfltk
+LINKSHARED    = -L../src -Wl,-rpath-link,../src -lfltk_images -lfltk_forms -lfltk
+
 CPPFILES =\
 	unittests.cxx \
 	adjuster.cxx \
@@ -311,6 +321,8 @@ colbrowser$(EXEEXT): colbrowser.o
 	$(OSX_ONLY) ../fltk-config --post $@
 
 color_chooser$(EXEEXT): color_chooser.o
+	echo Linking $@...
+	$(CXX) $(ARCHFLAGS) $(LDFLAGS) color_chooser.o -o $@ $(LINKFLTK) -lXext -lX11
 
 cursor$(EXEEXT): cursor.o
 
@@ -357,6 +369,8 @@ help$(EXEEXT): help.o $(IMGLIBNAME)
 iconize$(EXEEXT): iconize.o
 
 image$(EXEEXT): image.o
+	echo Linking $@...
+	$(CXX) $(ARCHFLAGS) $(LDFLAGS) image.o -o $@ $(LINKFLTK) -lXext -lX11
 
 inactive$(EXEEXT): inactive.o
 inactive.cxx:	inactive.fl ../fluid/fluid$(EXEEXT)
@@ -380,6 +394,8 @@ label$(EXEEXT): label.o
 line_style$(EXEEXT): line_style.o
 
 list_visuals$(EXEEXT): list_visuals.o
+	echo Linking $@...
+	$(CXX) $(ARCHFLAGS) $(LDFLAGS) list_visuals.o -o $@ $(LINKFLTK) -lXext -lX11
 
 mandelbrot$(EXEEXT): mandelbrot_ui.o mandelbrot.o
 	echo Linking $@...
@@ -438,7 +454,7 @@ subwindow$(EXEEXT): subwindow.o
 
 sudoku: sudoku.o
 	echo Linking $@...
-	$(CXX) $(ARCHFLAGS) $(LDFLAGS) sudoku.o -o $@ $(AUDIOLIBS) $(LINKFLTKIMG) $(LDLIBS)
+	$(CXX) $(ARCHFLAGS) $(LDFLAGS) sudoku.o -o $@ $(AUDIOLIBS) $(LINKFLTKIMG) -lX11
 	$(OSX_ONLY) $(INSTALL_BIN) sudoku$(EXEEXT) sudoku.app/Contents/MacOS
 
 sudoku.exe: sudoku.o sudoku.rc
@@ -454,6 +470,8 @@ tabs$(EXEEXT): tabs.o
 tabs.cxx:	tabs.fl ../fluid/fluid$(EXEEXT)
 
 threads$(EXEEXT): threads.o
+	echo Linking $@...
+	$(CXX) -I.. $(LDFLAGS) threads.o -o $@ $(LINKFLTK) -lpthread
 # This ensures that we have this dependency even if threads are not
 # enabled in the current tree...
 threads.o:	threads.h
@@ -461,6 +479,8 @@ threads.o:	threads.h
 tile$(EXEEXT): tile.o
 
 tiled_image$(EXEEXT): tiled_image.o
+	echo Linking $@...
+	$(CXX) $(ARCHFLAGS) $(LDFLAGS) tiled_image.o -o $@ $(LINKFLTK) -lXext -lX11
 
 tree$(EXEEXT): tree.o
 tree.cxx:	tree.fl ../fluid/fluid$(EXEEXT)
@@ -490,7 +510,7 @@ cube$(EXEEXT): cube.o
 
 fractals$(EXEEXT): fractals.o fracviewer.o
 	echo Linking $@...
-	$(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ fractals.o fracviewer.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
+	$(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ fractals.o fracviewer.o $(LINKFLTKGL) $(LINKFLTK) -lGLU $(GLDLIBS)
 	$(OSX_ONLY) ../fltk-config --post $@
 
 fullscreen$(EXEEXT): fullscreen.o
@@ -500,7 +520,7 @@ fullscreen$(EXEEXT): fullscreen.o
 
 glpuzzle$(EXEEXT): glpuzzle.o
 	echo Linking $@...
-	$(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ glpuzzle.o $(LINKFLTKGL) $(LINKFLTK) $(GLDLIBS)
+	$(CXX) $(ARCHFLAGS) $(LDFLAGS) -o $@ glpuzzle.o $(LINKFLTKGL) $(LINKFLTK) -lGLU $(GLDLIBS)
 	$(OSX_ONLY) ../fltk-config --post $@
 
 gl_overlay$(EXEEXT): gl_overlay.o
--- fltk1.3-1.3.2.orig/src/Fl_x.cxx
+++ fltk1.3-1.3.2/src/Fl_x.cxx
@@ -319,6 +319,7 @@ Atom fl_XdndFinished;
 //Atom fl_XdndProxy;
 Atom fl_XdndURIList;
 Atom fl_Xatextplainutf;
+Atom fl_Xatextplainutf2;		// STR#2930 
 Atom fl_Xatextplain;
 static Atom fl_XaText;
 Atom fl_XaCompoundText;
@@ -621,6 +622,7 @@ void fl_open_display(Display* d) {
   fl_XdndEnter          = XInternAtom(d, "XdndEnter",           0);
   fl_XdndURIList        = XInternAtom(d, "text/uri-list",       0);
   fl_Xatextplainutf     = XInternAtom(d, "text/plain;charset=UTF-8",0);
+  fl_Xatextplainutf2    = XInternAtom(d, "text/plain;charset=utf-8",0);	// Firefox/Thunderbird needs this - See STR#2930
   fl_Xatextplain        = XInternAtom(d, "text/plain",          0);
   fl_XaText             = XInternAtom(d, "TEXT",                0);
   fl_XaCompoundText     = XInternAtom(d, "COMPOUND_TEXT",       0);
@@ -1023,13 +1025,17 @@ int fl_handle(const XEvent& thisevent)
 	Atom type = XA_STRING;
 	for (unsigned i = 0; i<count; i++) {
 	  Atom t = ((Atom*)portion)[i];
-	    if (t == fl_Xatextplainutf ||
-		  t == fl_Xatextplain ||
-		  t == fl_XaUtf8String) {type = t; break;}
-	    // rest are only used if no utf-8 available:
-	    if (t == fl_XaText ||
-		  t == fl_XaTextUriList ||
-		  t == fl_XaCompoundText) type = t;
+	  if (t == fl_Xatextplainutf ||
+	      t == fl_Xatextplainutf2 ||
+	      t == fl_Xatextplain ||
+	      t == fl_XaUtf8String) {
+	    type = t;
+	    break;
+	  }
+	  // rest are only used if no utf-8 available:
+	  if (t == fl_XaText ||
+	      t == fl_XaTextUriList ||
+	      t == fl_XaCompoundText) type = t;
 	}
 	XFree(portion);
 	Atom property = xevent.xselection.property;
@@ -1096,7 +1102,8 @@ int fl_handle(const XEvent& thisevent)
 	     e.target == fl_XaCompoundText ||
 	     e.target == fl_XaText ||
 	     e.target == fl_Xatextplain ||
-	     e.target == fl_Xatextplainutf) {
+	     e.target == fl_Xatextplainutf ||
+	     e.target == fl_Xatextplainutf2) {
 	// clobber the target type, this seems to make some applications
 	// behave that insist on asking for XA_TEXT instead of UTF8_STRING
 	// Does not change XA_STRING as that breaks xclipboard.
@@ -1186,23 +1193,24 @@ int fl_handle(const XEvent& thisevent)
       }
 
       // Loop through the source types and pick the first text type...
-      int i;
-
-      for (i = 0; fl_dnd_source_types[i]; i ++)
-      {
-//        printf("fl_dnd_source_types[%d] = %ld (%s)\n", i,
-//             fl_dnd_source_types[i],
-//             XGetAtomName(fl_display, fl_dnd_source_types[i]));
-
-        if (!strncmp(XGetAtomName(fl_display, fl_dnd_source_types[i]),
-                     "text/", 5))
+      unsigned i;
+      Atom type = ((Atom*)fl_dnd_source_types)[0];
+      for (i = 0; fl_dnd_source_types[i]; i ++) {
+        Atom t = ((Atom*)fl_dnd_source_types)[i];
+        //printf("fl_dnd_source_types[%d]=%ld(%s)\n",i,t,XGetAtomName(fl_display,t));
+        if (t == fl_Xatextplainutf ||		// "text/plain;charset=UTF-8"
+            t == fl_Xatextplainutf2 ||		// "text/plain;charset=utf-8" -- See STR#2930
+            t == fl_Xatextplain ||		// "text/plain"
+            t == fl_XaUtf8String) {		// "UTF8_STRING"
+          type = t;
           break;
+	}
+        // rest are only used if no utf-8 available:
+        if (t == fl_XaText ||			// "TEXT"
+            t == fl_XaTextUriList ||		// "text/uri-list"
+            t == fl_XaCompoundText) type = t;	// "COMPOUND_TEXT"
       }
-
-      if (fl_dnd_source_types[i])
-        fl_dnd_type = fl_dnd_source_types[i];
-      else
-        fl_dnd_type = fl_dnd_source_types[0];
+      fl_dnd_type = type;
 
       event = FL_DND_ENTER;
       Fl::e_text = unknown;
@@ -1873,7 +1881,7 @@ void Fl_X::make_xid(Fl_Window* win, XVis
   // since we do not want save_under, do not want to turn off the
   // border, and cannot grab without an existing window. Besides, 
   // there is no clear_override(). 
-  if (win->flags() & Fl_Widget::FULLSCREEN && !Fl_X::ewmh_supported()) {
+  if (win->fullscreen_active() && !Fl_X::ewmh_supported()) {
     attr.override_redirect = 1;
     mask |= CWOverrideRedirect;
     Fl::screen_xywh(X, Y, W, H, X, Y, W, H);
@@ -1940,7 +1948,7 @@ void Fl_X::make_xid(Fl_Window* win, XVis
     }
 
     // If asked for, create fullscreen
-    if (win->flags() & Fl_Widget::FULLSCREEN && Fl_X::ewmh_supported()) {
+    if (win->fullscreen_active() && Fl_X::ewmh_supported()) {
       XChangeProperty (fl_display, xp->xid, fl_NET_WM_STATE, XA_ATOM, 32,
                        PropModeAppend, (unsigned char*) &fl_NET_WM_STATE_FULLSCREEN, 1);
     }
@@ -1984,7 +1992,7 @@ void Fl_X::make_xid(Fl_Window* win, XVis
   }
 
   // non-EWMH fullscreen case, need grab
-  if (win->flags() & Fl_Widget::FULLSCREEN && !Fl_X::ewmh_supported()) {
+  if (win->fullscreen_active() && !Fl_X::ewmh_supported()) {
     XGrabKeyboard(fl_display, xp->xid, 1, GrabModeAsync, GrabModeAsync, fl_event_time);
   }
 
