diff --git a/src/osgPlugins/txp/ReaderWriterTXP.cpp b/src/osgPlugins/txp/ReaderWriterTXP.cpp
index 3857621..e8591d4 100644
--- a/src/osgPlugins/txp/ReaderWriterTXP.cpp
+++ b/src/osgPlugins/txp/ReaderWriterTXP.cpp
@@ -865,29 +865,31 @@ osg::Node* ReaderWriterTXP::getTileContent(const TXPArchive::TileInfo &info, int
 
     double realMinRange = info.minRange;
     double realMaxRange = info.maxRange;
     double  usedMaxRange = osg::maximum(info.maxRange,1e7);
     osg::Vec3 tileCenter;
     osg::Group* tileGroup = archive->getTileContent(x,y,lod,realMinRange,realMaxRange,usedMaxRange,tileCenter, childrenLoc);
 
     // if group has only one child, then simply use its child.
-    while (tileGroup->getNumChildren()==1 && tileGroup->getChild(0)->asGroup())
+    // if the node is a transform, then stop processing so as to not loose the transformation
+    while (tileGroup && !tileGroup->asTransform() &&
+           tileGroup->getNumChildren()==1 && tileGroup->getChild(0)->asGroup())
     {
         tileGroup = tileGroup->getChild(0)->asGroup();
     }
 
     bool doSeam = false;
     if(majorVersion == 2 && minorVersion >= 1)
         doSeam = (childrenLoc.size() > 0);
     else
         doSeam = (lod < (archive->getNumLODs() - 1));
 
     // Handle seams
-    if (doSeam)
+    if (tileGroup && doSeam)
     {
         SeamFinder sfv(x,y,lod,info,archive);
         tileGroup->accept(sfv);
     }
 
     return tileGroup;
 }
 
@@ -901,23 +903,25 @@ osg::Node* ReaderWriterTXP::getTileContent(const TXPArchive::TileInfo &info, con
 
     double realMinRange = info.minRange;
     double realMaxRange = info.maxRange;
     double usedMaxRange = osg::maximum(info.maxRange,1e7);
     osg::Vec3 tileCenter;
     osg::Group* tileGroup = archive->getTileContent(loc,realMinRange,realMaxRange,usedMaxRange,tileCenter, childrenLoc);
 
     // if group has only one child, then simply use its child.
-    while (tileGroup->getNumChildren()==1 && tileGroup->getChild(0)->asGroup())
+    // if the node is a transform, then stop processing so as to not loose the transformation
+    while (tileGroup && !tileGroup->asTransform() &&
+           tileGroup->getNumChildren()==1 && tileGroup->getChild(0)->asGroup())
     {
         tileGroup = tileGroup->getChild(0)->asGroup();
     }
 
     // Handle seams
-    if (childrenLoc.size() > 0)
+    if (tileGroup && childrenLoc.size() > 0)
     {
         SeamFinder sfv(loc.x, loc.y, loc.lod, info, archive);
         tileGroup->accept(sfv);
     }
 
     return tileGroup;
 }
 
