Index: /experimental/distortionNG/DistortionManipulator.cpp
===================================================================
--- /experimental/distortionNG/DistortionManipulator.cpp	(revision 369)
+++ /experimental/distortionNG/DistortionManipulator.cpp	(revision 370)
@@ -51,4 +51,11 @@
 	sh->setName("shaderIntensityMapVis");
 	ds->setShaderIntensityMapVis( sh );
+
+	//LF Get Screen Resolution for Cursor Position Scaling
+	osg::GraphicsContext::WindowingSystemInterface* wsi = osg::GraphicsContext::getWindowingSystemInterface();
+	if (!wsi) { osg::notify(osg::NOTICE)<<"Error, no WindowSystemInterface available, cannot create windows."<<std::endl; }
+	wsi->getScreenResolution(osg::GraphicsContext::ScreenIdentifier(0), _screenPixWidth, _screenPixHeight);
+
+
 }
 
@@ -71,4 +78,6 @@
 bool DistortionManipulator::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa, osg::Object* obj, osg::NodeVisitor* nv)
 {
+
+
 	switch(ea.getEventType())
     {
@@ -87,6 +96,13 @@
 				OSG_ALWAYS<<"ea.getYin()="<<ea.getYmin()<<std::endl;
 				OSG_ALWAYS<<"ea.getYmax()="<<ea.getYmax()<<std::endl;
-
-
+				
+				//LF get X,Y normalized to lowerleftcorner (0,0) / upperrightcorner (1,1)
+				OSG_ALWAYS<<"getXnormalizedLF()="<<(ea.getXnormalized()+1.0)/2.0<<std::endl;
+				OSG_ALWAYS<<"getYnormalizedLF()="<<(ea.getYnormalized()+1.0)/2.0<<std::endl;
+
+				//LF get X,Y in pixels (lowerleftcorner (0,0) / upperrightcorner (screenwidth,screenheigth)
+				OSG_ALWAYS<<std::endl<<"Screen Resolution: "<<_screenPixWidth<<" x "<<_screenPixHeight<<std::endl;
+				OSG_ALWAYS<<"getXPixelspaceLF()="<<(int)((float)_screenPixWidth*(ea.getXnormalized()+1.0)/2.0)<<std::endl;
+				OSG_ALWAYS<<"getYPixelspaceLF()="<<(int)((float)_screenPixHeight*(ea.getYnormalized()+1.0)/2.0)<<std::endl;
 
 				if(activeDistortionMode == MESH)
@@ -120,6 +136,9 @@
 					if ( intersector->containsIntersections() )
 					{
-						osgUtil::LineSegmentIntersector::Intersection& result = *(intersector->getIntersections().begin());
-						computeSelectedVertex( result );
+						//osgUtil::LineSegmentIntersector::Intersection& result = *(intersector->getIntersections().begin());
+						osgUtil::LineSegmentIntersector::Intersection *result;
+						result=&intersector->getFirstIntersection();
+						computeSelectedVertex( *result );
+						//computeSelectedVertex( result );
 					}
 				}
@@ -222,62 +241,5 @@
 				OSG_ALWAYS<<"KEY_KP_8 : todo: Save DistortionContainer"<<std::endl;
 
-
-
-	// Configure Compression and instantiate read/write-options
-	bool asAscii_ = true;
-	bool compressionEnabled = false;
-
-	std::string readOptionString = "";
-	std::string writeOptionString = "";
-	if(asAscii_)
-	{
-		readOptionString = "Ascii";
-		writeOptionString = "Ascii";
-	}
-	if (compressionEnabled)
-		writeOptionString+=" Compressor=zlib";
-	
-	osg::ref_ptr<osgDB::Options> readOptions = new osgDB::Options( readOptionString.c_str() );
-	osg::ref_ptr<osgDB::Options> writeOptions = new osgDB::Options( writeOptionString.c_str() );
-
-	//// Get ReaderWriter
-	//osg::ref_ptr<osgDB::ReaderWriter> rw = osgDB::Registry::instance()->getReaderWriterForExtension("osgb");	
-
-	//// Writing node to stream
-	//std::stringstream myOstream;
-	//if ( rw )
-	//{
-	//	osgDB::ReaderWriter::WriteResult wr = rw->writeObject( *_distortionSet, myOstream, writeOptions );
-	//	if (wr.success() )			
-	//	{
-	//		OSG_ALWAYS<<"write node success"<<std::endl;
-	//	}
-	//	else
-	//	{
-	//		OSG_ALWAYS<<"write node failed"<<std::endl;
-	//	}
-	//}
-
-	if( osgDB::writeObjectFile(*_distortionSet, "test.osgt", writeOptions) )
-	{
-		OSG_ALWAYS<<"write node success"<<std::endl;
-	}
-	else
-	{
-		OSG_ALWAYS<<"write node failed"<<std::endl;
-	}
-
-
-
-
-
-
-
-
-
-
-
-
-
+				osgDB::writeObjectFile( *_distortionSet, "distortionset.dist" );
 				return(true);
 			}
@@ -411,4 +373,8 @@
 	stateSet->setMode(GL_LIGHTING,osg::StateAttribute::OFF);
 
+	// Modify StateSet to protect it against state changes by the stateset Manipulator
+	osg::PolygonMode* polyModeObj = new osg::PolygonMode;
+    stateSet->setAttribute(polyModeObj, osg::StateAttribute::PROTECTED|osg::StateAttribute::ON);
+
 	// Add Text: 
 	osg::Vec3 position(20.0f,120.0f,0.0f);
@@ -462,5 +428,5 @@
 	
 	updateHUD();
-	_distortionSet->getDistortionInternals()->addChild(geode, false);	//  = child #2  :definition: child #0 = mesh, #1 = highlighter, #2 HUD
+	_distortionSet->getDistortionInternals()->addChild(geode, false);	//  = child #2. The definition is: child #0 = mesh, #1 = highlighter, #2 HUD
 }
 
Index: /experimental/distortionNG/DistortionManipulator.h
===================================================================
--- /experimental/distortionNG/DistortionManipulator.h	(revision 369)
+++ /experimental/distortionNG/DistortionManipulator.h	(revision 370)
@@ -90,4 +90,8 @@
 	osg::Geometry* _distortionMesh;
 	const osg::Vec4 _highlightColor;
+	
+	//LF Screen Resolution
+	unsigned int _screenPixWidth, _screenPixHeight;
+	
 
 	// HUD
Index: /experimental/distortionNG/extViewer.cpp
===================================================================
--- /experimental/distortionNG/extViewer.cpp	(revision 369)
+++ /experimental/distortionNG/extViewer.cpp	(revision 370)
@@ -276,5 +276,5 @@
         stateset->setTextureAttributeAndModes(_distortionSet->getTexUnitScene(), sceneTexture,osg::StateAttribute::ON);
         stateset->setMode(GL_LIGHTING,osg::StateAttribute::OFF);
-		// Modify StateSet to protectit agaiunst state changes by the stateset Manipulator
+		// Modify StateSet to protectit against state changes by the stateset Manipulator
 		osg::PolygonMode* polyModeObj = new osg::PolygonMode;
         stateset->setAttribute(polyModeObj, osg::StateAttribute::PROTECTED|osg::StateAttribute::ON);
Index: /experimental/distortionNG/main.cpp
===================================================================
--- /experimental/distortionNG/main.cpp	(revision 369)
+++ /experimental/distortionNG/main.cpp	(revision 370)
@@ -58,7 +58,7 @@
 // ---- test plugin read / write
 
-	//osgDB::writeObjectFile( *_distortionSet, "testcont.dist" );
+	//osgDB::writeObjectFile( *_distortionSet, "distortionset.dist" );
 	_distortionSet = NULL;
-	_distortionSet = dynamic_cast<osgViewer::DistortionSet*>( osgDB::readObjectFile( "testcont.dist" ) );
+	_distortionSet = dynamic_cast<osgViewer::DistortionSet*>( osgDB::readObjectFile( "distortionset.dist" ) );
 		
 
@@ -164,9 +164,9 @@
  *																					Ensures the Coordinates are normalized before saving the container.
  *										Load: 
- *										* use serializer to load container
+ *							[done]		* use ReaderWriterOSG2 to load container
  *										* invoke osgViewer::setUpViewForManualDistortion(distSet, screenNum, projectorMatrix) to set up distortion
  *										Save:
  *										* check if container is normalized. if not, copy and normalize container
- *										* use serializer to save container
+ *							[done]		* use ReaderWriterOSG2 to save container
  *  
  * 
