diff --git a/App/NatronApp_main.cpp b/App/NatronApp_main.cpp
index 68a45f939..90202fa0c 100644
--- a/App/NatronApp_main.cpp
+++ b/App/NatronApp_main.cpp
@@ -67,7 +67,7 @@ int main(int argc, char *argv[])
     boost_adaptbx::floating_point::exception_trapping trap(boost_adaptbx::floating_point::exception_trapping::division_by_zero |
                                                            boost_adaptbx::floating_point::exception_trapping::invalid |
                                                            boost_adaptbx::floating_point::exception_trapping::overflow);
-    assert(boost_adaptbx::floating_point::is_invalid_trapped());
+//  assert(boost_adaptbx::floating_point::is_invalid_trapped());
 #endif
 
 #ifdef Q_OS_WIN
diff --git a/Engine/Node.cpp b/Engine/Node.cpp
index 000ec8519..9731d8dba 100644
--- a/Engine/Node.cpp
+++ b/Engine/Node.cpp
@@ -3164,7 +3164,7 @@ renderPreview(const Image & srcImg,
               bool convertToSrgb,
               unsigned int* dstPixels)
 {
-#ifndef DEBUG_NAN
+#ifdef DEBUG_NAN
     // Some plugins generate FP exceptions
     boost_adaptbx::floating_point::exception_trapping trap(0);
 #endif
diff --git a/global.pri b/global.pri
index e89cffbe4..4ca4b932b 100644
--- a/global.pri
+++ b/global.pri
@@ -22,6 +22,10 @@ CONFIG += c++11
 # libs may modify the config (eg openmp), so it must be included before
 include(libs.pri)
 
+!include(config.pri) {
+  error("System-specific config.pri file not present, please follow the installation instructions and create it.")
+}
+
 CONFIG += exceptions warn_on no_keywords
 DEFINES += OFX_EXTENSIONS_NUKE OFX_EXTENSIONS_TUTTLE OFX_EXTENSIONS_VEGAS OFX_SUPPORTS_PARAMETRIC OFX_EXTENSIONS_TUTTLE OFX_EXTENSIONS_NATRON OFX_EXTENSIONS_RESOLVE OFX_SUPPORTS_OPENGLRENDER
 DEFINES += OFX_SUPPORTS_MULTITHREAD
@@ -620,9 +624,3 @@ FC_DEFAULT_FONTS += "<dir>WINDOWSFONTDIR</dir>"
 FC_DEFAULT_FONTS += "<dir>~/AppData/Local/Microsoft/Windows/Fonts</dir>"
 FC_CACHEDIR += "<cachedir>LOCAL_APPDATA_FONTCONFIG_CACHE</cachedir>"
 }
-
-
-# and finally...
-!include(config.pri) {
-  error("System-specific config.pri file not present, please follow the installation instructions and create it.")
-}
diff --git a/tools/travis/install_dependencies.sh b/tools/travis/install_dependencies.sh
index 5ce67274e..6286fc747 100755
--- a/tools/travis/install_dependencies.sh
+++ b/tools/travis/install_dependencies.sh
@@ -22,6 +22,8 @@ set -e
 # Print commands and their arguments as they are executed.
 set -x
 
+TRAVIS_BUILD_DIR=${TRAVIS_BUILD_DIR:="."}
+
 # enable testing locally or on forks without multi-os enabled
 if [[ "${TRAVIS_OS_NAME:-false}" == false ]]; then
     if [[ $(uname -s) == "Darwin" ]]; then
@@ -41,40 +43,51 @@ if [[ ${TRAVIS_OS_NAME} == "linux" ]]; then
     #GCC_VERSION=7
     GCC_VERSION=8
     PKGS=
+    PIP=pip
+    PYTHON=python2
+    PYTHON_CONFIG=python2-config
     # Natron requires boost >= 1.49 to compile in C++11 mode
     # see http://stackoverflow.com/questions/11302758/error-while-copy-constructing-boostshared-ptr-using-c11
     ## we used the irie/boost ppa for that purpose
     #sudo add-apt-repository -y ppa:irie/boost
-    if [ `lsb_release -cs` = "xenial" ]; then
+    if [ `lsb_release -cs` = "impish" ]; then
+        GCC_VERSION=11
+        PIP=pip3
+        PYTHON=python3
+        PYTHON_CONFIG=python3-config
+    elif [ `lsb_release -cs` = "xenial" ]; then
         BOOSTVER=1.58
+        # the PPA xorg-edgers contains cairo 1.12 (required for rotoscoping)
+        sudo add-apt-repository -y ppa:xorg-edgers/ppa
     elif [ `lsb_release -cs` = "trusty" ]; then
         # samuel-bachmann/boost has a backport of boost 1.60
         sudo add-apt-repository -y ppa:samuel-bachmann/boost
         BOOSTVER=1.60
         sudo add-apt-repository -y ppa:george-edison55/cmake-3.x
+        # the PPA xorg-edgers contains cairo 1.12 (required for rotoscoping)
+        sudo add-apt-repository -y ppa:xorg-edgers/ppa
     elif [ `lsb_release -cs` = "precise" ]; then
         # 12.04LTS Precise
         # now we use ppa:boost-latest/ppa (contains boost 1.55)
         sudo add-apt-repository -y ppa:boost-latest/ppa
         BOOSTVER=1.55
         sudo add-apt-repository -y ppa:kalakris-cmake
+        # the PPA xorg-edgers contains cairo 1.12 (required for rotoscoping)
+        sudo add-apt-repository -y ppa:xorg-edgers/ppa
     fi
     #PKGS="$PKGS libboost${BOOSTVER}-dev libboost-math${BOOSTVER}-dev libboost-serialization${BOOSTVER}-dev"
     PKGS="$PKGS libboost-dev libboost-math-dev libboost-serialization-dev"
 
-    # the PPA xorg-edgers contains cairo 1.12 (required for rotoscoping)
-    sudo add-apt-repository -y ppa:xorg-edgers/ppa
     PKGS="$PKGS libcairo2-dev"
 
     # ubuntu-toolchain-r/test contains recent versions of gcc
     if [ "$CC" = "$TEST_CC" ]; then
         sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test;
         PKGS="$PKGS gcc-${GCC_VERSION} g++-${GCC_VERSION}";
-    fi
 
-    if [ "$CC" = "$TEST_CC" ]; then
-        sudo -H pip install cpp-coveralls;
+        sudo -H $PIP install cpp-coveralls;
     fi
+
     ## Python 3.4
     ##sudo add-apt-repository --yes ppa:fkrull/deadsnakes # python3.x
     # we get libyaml-cpp-dev from kubuntu backports (for OpenColorIO)
@@ -95,17 +108,13 @@ if [[ ${TRAVIS_OS_NAME} == "linux" ]]; then
         fi
     fi
 
-    # Note: Python 3 packages are python3-dev and python3-pyside
-    PKGS="$PKGS libqt4-dev libqt4-opengl-dev libglew-dev libexpat1-dev gdb libcairo2-dev python-dev python-pyside libpyside-dev libshiboken-dev"
-
-    echo "*** Python 2 version:"
-    python2 --version
-    python2 -c "from PySide import QtGui, QtCore, QtOpenGL"
-    echo "*** PySide:"
-    env PKG_CONFIG_PATH=`python2-config --prefix`/lib/pkgconfig pkg-config --libs pyside
-    echo "*** Shiboken:"
-    env PKG_CONFIG_PATH=`python2-config --prefix`/lib/pkgconfig pkg-config --libs shiboken
-    cat /usr/lib/x86_64-linux-gnu/pkgconfig/shiboken.pc
+    PKGS="$PKGS libglew-dev libexpat1-dev gdb libcairo2-dev"
+    if [ "$PYTHON" == "python2" ]; then
+        PKGS="$PKGS libqt4-dev libqt4-opengl-dev python-dev python-pyside libpyside-dev libshiboken-dev"
+    else
+        PKGS="$PKGS qttools5-dev libqt5opengl5-dev python3-dev libpyside2-dev libshiboken2-dev"
+        PKGS="$PKGS python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qtopengl python3-qtpy"
+    fi
 
     # OpenFX-IO
     # - ffmpeg
@@ -147,10 +156,33 @@ if [[ ${TRAVIS_OS_NAME} == "linux" ]]; then
     sudo apt-get install -y --allow-unauthenticated -fm $PKGS
 
 
-    
+
+    # now that apt-get has installed our packages, we can test them
+    echo "*** Python version:"
+    $PYTHON --version
+    if [ "$PYTHON" == "python3" ]; then
+        $PYTHON -c "from PySide2 import QtGui, QtCore, QtOpenGL"
+        echo "*** PySide2:"
+        env PKG_CONFIG_PATH=`$PYTHON_CONFIG --prefix`/lib/pkgconfig pkg-config --libs pyside2
+        echo "*** Shiboken2:"
+        env PKG_CONFIG_PATH=`$PYTHON_CONFIG --prefix`/lib/pkgconfig pkg-config --libs shiboken2
+        cat /usr/lib/x86_64-linux-gnu/pkgconfig/shiboken2.pc
+    else
+        $PYTHON -c "from PySide import QtGui, QtCore, QtOpenGL"
+        echo "*** PySide:"
+        env PKG_CONFIG_PATH=`$PYTHON_CONFIG --prefix`/lib/pkgconfig pkg-config --libs pyside
+        echo "*** Shiboken:"
+        env PKG_CONFIG_PATH=`$PYTHON_CONFIG --prefix`/lib/pkgconfig pkg-config --libs shiboken
+        cat /usr/lib/x86_64-linux-gnu/pkgconfig/shiboken.pc
+    fi
+
+
+
+
+
     ################################################################
     # build dependencies that cannot be fetched from apt
-    
+
     # ubuntu-toolchain-r/test contains recent versions of gcc
     if [ "$CC" = "$TEST_CC" ]; then
         sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-${GCC_VERSION} 90;
@@ -233,23 +265,38 @@ if [[ ${TRAVIS_OS_NAME} == "linux" ]]; then
     echo 'expat: PKGCONFIG -= expat' >> config.pri
     # pyside and shiboken for python3 cannot be configured with pkg-config on Ubuntu 12.04LTS Precise
     # pyside and shiboken for python2 still need the extra QtCore and QtGui include directories
+    echo "PYTHON_CONFIG = $PYTHON_CONFIG" >> config.pri
     echo 'PYSIDE_PKG_CONFIG_PATH = $$system($$PYTHON_CONFIG --prefix)/lib/pkgconfig' >> config.pri
-    echo 'pyside: PKGCONFIG -= pyside' >> config.pri
-    echo 'pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside)' >> config.pri
-    echo 'pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside)/QtCore' >> config.pri
-    echo 'pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside)/QtGui' >> config.pri
-    echo 'pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir QtGui)' >> config.pri
-    #echo 'pyside: LIBS += -lpyside.cpython-32mu' >> config.pri
-    echo 'pyside: LIBS += -lpyside-python2.7' >> config.pri
-    # pyside doesn't have PySide::getWrapperForQObject on Ubuntu 12.04LTS Precise 
-    echo 'pyside: DEFINES += PYSIDE_OLD' >> config.pri
-    #echo 'shiboken: PKGCONFIG -= shiboken' >> config.pri
-    #echo 'shiboken: INCLUDEPATH += $$system(pkg-config --variable=includedir shiboken)' >> config.pri
-    #echo 'shiboken: LIBS += -lshiboken.cpython-32mu' >> config.pri
+
+    if [ "$PYTHON" == "python3" ]; then
+        echo 'CONFIG += python3' >> config.pri
+        echo 'pyside: PKGCONFIG -= pyside2' >> config.pri
+        echo 'pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside2)' >> config.pri
+        echo 'pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside2)/QtCore' >> config.pri
+        echo 'pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside2)/QtGui' >> config.pri
+        echo 'pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir Qt5Gui)' >> config.pri
+        echo 'pyside: LIBS += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config libs pyside2)' >> config.pri
+        echo 'shiboken: PKGCONFIG -= shiboken2' >> config.pri
+        echo 'shiboken: INCLUDEPATH += $$system(pkg-config --variable=includedir shiboken2)' >> config.pri
+        echo 'shiboken: LIBS += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config libs shiboken2)' >> config.pri
+    else
+        echo 'pyside: PKGCONFIG -= pyside' >> config.pri
+        echo 'pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside)' >> config.pri
+        echo 'pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside)/QtCore' >> config.pri
+        echo 'pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir pyside)/QtGui' >> config.pri
+        echo 'pyside: INCLUDEPATH += $$system(env PKG_CONFIG_PATH=$$PYSIDE_PKG_CONFIG_PATH pkg-config --variable=includedir QtGui)' >> config.pri
+        #echo 'pyside: LIBS += -lpyside.cpython-32mu' >> config.pri
+        echo 'pyside: LIBS += -lpyside-python2.7' >> config.pri
+        # pyside doesn't have PySide::getWrapperForQObject on Ubuntu 12.04LTS Precise
+        echo 'pyside: DEFINES += PYSIDE_OLD' >> config.pri
+        #echo 'shiboken: PKGCONFIG -= shiboken' >> config.pri
+        #echo 'shiboken: INCLUDEPATH += $$system(pkg-config --variable=includedir shiboken)' >> config.pri
+        #echo 'shiboken: LIBS += -lshiboken.cpython-32mu' >> config.pri
+    fi
 
     IO_BRANCH=master
     . $TRAVIS_BUILD_DIR/Global/plugin-branches.sh
-    
+
     # build OpenFX-IO
     if [ "$CC" = "$TEST_CC" ]; then
         pushd $TRAVIS_BUILD_DIR
@@ -275,7 +322,7 @@ elif [[ ${TRAVIS_OS_NAME} == "osx" ]]; then
     # install_xquartz(){
     #     echo "XQuartz start install"
     #     XQUARTZ_VERSION=2.7.6
-    #     
+    #
     #     echo "XQuartz download"
     #     wget --quiet http://xquartz.macosforge.org/downloads/SL/XQuartz-${XQUARTZ_VERSION}.dmg
     #     echo "XQuartz mount dmg"
@@ -301,7 +348,7 @@ elif [[ ${TRAVIS_OS_NAME} == "osx" ]]; then
     # (see https://travis-ci.org/NatronGitHub/Natron/jobs/504468941)
     #brew install numpy || true
     #brew link --overwrite numpy || true
-    
+
     brew outdated xctool || brew upgrade xctool || true
     echo "* Adding brew taps"
     #brew tap homebrew/python # deprecated
@@ -346,10 +393,10 @@ elif [[ ${TRAVIS_OS_NAME} == "osx" ]]; then
     #brew upgrade
     echo "* Brew doctor"
     brew doctor || true
-    
+
     echo "* Install Natron dependencies"
     #echo " - pip install numpy" # installed via brew install numpy (see below)
-    #pip install --upgrade numpy
+    #$PIP install --upgrade numpy
     # brew install numpy  # Compilation errors with gfortran
     echo " - install brew packages"
     # TuttleOFX's dependencies:
@@ -448,7 +495,7 @@ EOS
 
     # OpenImageIO >= 1.8 requires c++11
     CXX="$CXX -std=c++11"
-    
+
     # OpenFX
     if [ "$CC" = "$TEST_CC" ]; then
         make -C libs/OpenFX/Examples;