diff --git a/src/adaptors/UBSvgSubsetAdaptor.cpp b/src/adaptors/UBSvgSubsetAdaptor.cpp
index baf2fb8705b355da9ae18d73eb018d7a94f5be5f..286d148d79d24ba7a04989397c3e943e17cf99df 100644
--- a/src/adaptors/UBSvgSubsetAdaptor.cpp
+++ b/src/adaptors/UBSvgSubsetAdaptor.cpp
@@ -1961,7 +1961,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::audioItemToLinkedAudio(UBGraphicsAud
         mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "position", QString("%1").arg(pos));
     }
 
-    QString audioFileHref = audioItem->mediaFileUrl().toString();
+    QString audioFileHref = audioItem->mediaFileUrl().toLocalFile();
     mXmlWriter.writeAttribute(nsXLink, "href", audioFileHref);
     mXmlWriter.writeEndElement();
 }
@@ -1986,7 +1986,7 @@ void UBSvgSubsetAdaptor::UBSvgSubsetWriter::videoItemToLinkedVideo(UBGraphicsVid
         mXmlWriter.writeAttribute(UBSettings::uniboardDocumentNamespaceUri, "position", QString("%1").arg(pos));
     }
 
-    QString videoFileHref = videoItem->mediaFileUrl().toString();
+    QString videoFileHref = videoItem->mediaFileUrl().toLocalFile();
     mXmlWriter.writeAttribute(nsXLink, "href", videoFileHref);
     mXmlWriter.writeEndElement();
 }
diff --git a/src/adaptors/UBThumbnailAdaptor.cpp b/src/adaptors/UBThumbnailAdaptor.cpp
index 69de08767893badbe34d5c73b22d1704536fe714..2432f89c7dd5c8be94f0449f9ceeb10743eecae2 100644
--- a/src/adaptors/UBThumbnailAdaptor.cpp
+++ b/src/adaptors/UBThumbnailAdaptor.cpp
@@ -33,29 +33,23 @@
 
 #include "core/memcheck.h"
 
-QList<QPixmap> UBThumbnailAdaptor::load(UBDocumentProxy* proxy)
+void UBThumbnailAdaptor::generateMissingThumbnails(UBDocumentProxy* proxy)
 {
-    QList<QPixmap> thumbnails;
-
-    if (!proxy || proxy->persistencePath().isEmpty())
-        return thumbnails;
-
-    //compatibility with older formats (<= 4.0.b.2.0) : generate missing thumbnails
-
     int existingPageCount = proxy->pageCount();
 
-    QString thumbFileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", existingPageCount);
-    QFile thumbFile(thumbFileName);
-
-    if (!thumbFile.exists())
+    for (int iPageNo = 0; iPageNo < existingPageCount; ++iPageNo)
     {
-        bool displayMessage = (existingPageCount > 5);
+        QString thumbFileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", iPageNo);
 
-        int thumbCount = 0;
+        QFile thumbFile(thumbFileName);
 
-        for(int i = 0 ; i < existingPageCount; i++)
+        if (!thumbFile.exists())
         {
-            UBGraphicsScene* scene = UBSvgSubsetAdaptor::loadScene(proxy, i);
+            bool displayMessage = (existingPageCount > 5);
+
+            int thumbCount = 0;
+
+            UBGraphicsScene* scene = UBSvgSubsetAdaptor::loadScene(proxy, iPageNo);
 
             if (scene)
             {
@@ -64,24 +58,25 @@ QList<QPixmap> UBThumbnailAdaptor::load(UBDocumentProxy* proxy)
                 if (displayMessage && thumbCount == 1)
                     UBApplication::showMessage(tr("Generating preview thumbnails ..."));
 
-                persistScene(proxy->persistencePath(), scene, i);
+                persistScene(proxy->persistencePath(), scene, iPageNo);
             }
-            else{
-                if(i==0){
-                    // we are working a document without zero page but on a system that enable it
-                    // we have to create an empty zero scene
-                    scene = new UBGraphicsScene(proxy);
-                    UBSvgSubsetAdaptor::persistScene(proxy,scene,0);
-                    persistScene(proxy->persistencePath(),scene,i);
-                    thumbCount++;
-                }
-            }
-        }
 
-        if (displayMessage && thumbCount > 0)
-            UBApplication::showMessage(tr("%1 thumbnails generated ...").arg(thumbCount));
+            if (displayMessage && thumbCount > 0)
+                UBApplication::showMessage(tr("%1 thumbnails generated ...").arg(thumbCount));
 
+        }
     }
+}
+
+QList<QPixmap> UBThumbnailAdaptor::load(UBDocumentProxy* proxy)
+{
+    QList<QPixmap> thumbnails;
+
+    if (!proxy || proxy->persistencePath().isEmpty())
+        return thumbnails;
+
+    //compatibility with older formats (<= 4.0.b.2.0) : generate missing thumbnails
+    generateMissingThumbnails(proxy);
 
     //end compatibility with older format
 
@@ -113,56 +108,27 @@ QPixmap UBThumbnailAdaptor::load(UBDocumentProxy* proxy, int index)
 {
     int existingPageCount = proxy->pageCount();
 
-    if (!proxy || proxy->persistencePath().size() == 0 || index < 0 || index >= existingPageCount)
+    if (!proxy || proxy->persistencePath().size() == 0 || index < 0 || index > existingPageCount)
         return QPixmap();
     //compatibility with older formats (<= 4.0.b.2.0) : generate missing thumbnails
-
-    QString thumbFileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", existingPageCount);
-
-    QFile thumbFile(thumbFileName);
-
-    if (!thumbFile.exists())
-    {
-        bool displayMessage = (existingPageCount > 5);
-
-        int thumbCount = 0;
-
-        for(int i = 0 ; i < existingPageCount; i++)
-        {
-            UBGraphicsScene* scene = UBSvgSubsetAdaptor::loadScene(proxy, i);
-
-            if (scene)
-            {
-                thumbCount++;
-
-                if (displayMessage && thumbCount == 1)
-                    UBApplication::showMessage(tr("Generating preview thumbnails ..."));
-
-                persistScene(proxy->persistencePath(), scene, i);
-            }
-        }
-
-        if (displayMessage && thumbCount > 0)
-            UBApplication::showMessage(tr("%1 thumbnails generated ...").arg(thumbCount));
-
-    }
+    generateMissingThumbnails(proxy);
 
     //end compatibility with older format
-        QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", index);
+    QString fileName = proxy->persistencePath() + UBFileSystemUtils::digitFileFormat("/page%1.thumbnail.jpg", index);
 
-        QFile file(fileName);
-        if (file.exists())
-        {
-            QPixmap pix;
-            //Warning. Works only with modified Qt
+    QFile file(fileName);
+    if (file.exists())
+    {
+        QPixmap pix;
+        //Warning. Works only with modified Qt
 #ifdef Q_WS_X11
-            pix.load(fileName, 0, Qt::AutoColor);
+        pix.load(fileName, 0, Qt::AutoColor);
 #else
-            pix.load(fileName, 0, Qt::AutoColor, false);
+        pix.load(fileName, 0, Qt::AutoColor, false);
 #endif
-            return pix;
-        }
-        return QPixmap();
+        return pix;
+    }
+    return QPixmap();
 }
 
 void UBThumbnailAdaptor::persistScene(const QString& pDocPath, UBGraphicsScene* pScene, int pageIndex, bool overrideModified)
diff --git a/src/adaptors/UBThumbnailAdaptor.h b/src/adaptors/UBThumbnailAdaptor.h
index 68352102dea4a3640449cb6f7a3f824fc5e73df9..75011f2d6669aa358fc091b3757730759a7e9c6d 100644
--- a/src/adaptors/UBThumbnailAdaptor.h
+++ b/src/adaptors/UBThumbnailAdaptor.h
@@ -29,6 +29,7 @@ private: UBThumbnailAdaptor() {}
 public:
     static void persistScene(const QString& pDocPath, UBGraphicsScene* pScene, int pageIndex, bool overrideModified = false);
 
+    static void generateMissingThumbnails(UBDocumentProxy* proxy);
     static QList<QPixmap> load(UBDocumentProxy* proxy);
 	static QPixmap load(UBDocumentProxy* proxy, int index);
 
diff --git a/src/domain/UBGraphicsAudioItem.cpp b/src/domain/UBGraphicsAudioItem.cpp
index f2d1ab451841cfac0dbd87fd120ad91ff8bd476c..b43271bf31cfd0a2ba9891fcddf57ab2bab7bc3e 100644
--- a/src/domain/UBGraphicsAudioItem.cpp
+++ b/src/domain/UBGraphicsAudioItem.cpp
@@ -96,6 +96,8 @@ UBItem* UBGraphicsAudioItem::deepCopy() const
 
     UBGraphicsAudioItem *copy = new UBGraphicsAudioItem(audioUrl, parentItem());
 
+    connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), copy, SLOT(activeSceneChanged()));
+
     copy->setPos(this->pos());
     copy->setTransform(this->transform());
     copy->setFlag(QGraphicsItem::ItemIsMovable, true);
diff --git a/src/domain/UBGraphicsVideoItem.cpp b/src/domain/UBGraphicsVideoItem.cpp
index 7ef73f8d80b30881961f0e0a31299174d26c78a5..40461a7f5ec482c385557f8dda16866217c88e51 100644
--- a/src/domain/UBGraphicsVideoItem.cpp
+++ b/src/domain/UBGraphicsVideoItem.cpp
@@ -69,6 +69,8 @@ UBItem* UBGraphicsVideoItem::deepCopy() const
 
     UBGraphicsVideoItem *copy = new UBGraphicsVideoItem(videoUrl, parentItem());
 
+    connect(UBApplication::boardController, SIGNAL(activeSceneChanged()), copy, SLOT(activeSceneChanged()));
+
     copy->setPos(this->pos());
     copy->setTransform(this->transform());
     copy->setFlag(QGraphicsItem::ItemIsMovable, true);