diff --git a/FindVOpenSceneGraph.cmake b/FindVOpenSceneGraph.cmake
index 3d9a97fa2be9b11b62e44fc7f001ab50fda4e9dc..8e28b7ee00fb7c9e54ff4879efa591666f7807a1 100644
--- a/FindVOpenSceneGraph.cmake
+++ b/FindVOpenSceneGraph.cmake
@@ -27,7 +27,6 @@ include( VistaFindUtils )
 	if( OPENSCENEGRAPH_LIBRARY_DIRS )
 		list( REMOVE_DUPLICATES OPENSCENEGRAPH_LIBRARY_DIRS )
 	endif()
-	message( "OPENSCENEGRAPH_LIBRARY_DIRS = ${OPENSCENEGRAPH_LIBRARY_DIRS}" )
 
 #endif( NOT VOPENSCENEGRAPH_FOUND )
 
diff --git a/PackageConfigReference.cmake_proto b/PackageConfigReference.cmake_proto
index 1b0474df114d6b4622f916101ddd6bc3acaef697..efa537eec73917dc08ad279fb8b6836801298e7e 100644
--- a/PackageConfigReference.cmake_proto
+++ b/PackageConfigReference.cmake_proto
@@ -3,7 +3,8 @@ set( @_PACKAGE_NAME_UPPER@_REFERENCED_FILE "@_REFERENCED_FILE@" )
 if( EXISTS "${@_PACKAGE_NAME_UPPER@_REFERENCED_FILE}" )
 	if( NOT PACKAGE_REFERENCE_EXISTS_TEST )
 		# we let the variable XYZ_DIR to the actual config file
-		set( @_PACKAGE_NAME@_DIR ${@_PACKAGE_NAME_UPPER@_REFERENCED_FILE} )
+		get_filename_component( @_PACKAGE_NAME@_DIR  "${@_PACKAGE_NAME_UPPER@_REFERENCED_FILE}" PATH )
+		set( @_PACKAGE_NAME@_ACTUAL_DIR "${@_PACKAGE_NAME@_DIR}" )
 		include( ${@_PACKAGE_NAME_UPPER@_REFERENCED_FILE} )
 	endif( NOT PACKAGE_REFERENCE_EXISTS_TEST )
 else( EXISTS "${@_PACKAGE_NAME_UPPER@_REFERENCED_FILE}" )
diff --git a/VistaCommon.cmake b/VistaCommon.cmake
index 9579e04d474448c210bd29d68d010d0344635fc3..88182027d83a46ac8b185ef950941fb3d1228f6a 100644
--- a/VistaCommon.cmake
+++ b/VistaCommon.cmake
@@ -210,7 +210,7 @@ function( local_use_existing_config_libs _NAME _ROOT_DIR _CONFIG_FILE _LIBRARY_D
 	string( TOUPPER ${_NAME} _NAME_UPPER )
 	if( EXISTS "${_CONFIG_FILE}" )
 		include( ${_CONFIG_FILE} )
-		get_filename_component( ${_NAME_UPPER}_ROOT_DIR ${${_NAME_UPPER}_ROOT_DIR} REALPATH )
+		get_filename_component( ${_NAME_UPPER}_ROOT_DIR "${${_NAME_UPPER}_ROOT_DIR}" REALPATH )
 		if( "${${_NAME_UPPER}_ROOT_DIR}" STREQUAL "${_ROOT_DIR}" )
 			if( ${_NAME_UPPER}_LIBRARY_DIRS )
 				list( APPEND ${_LIBRARY_DIR_LIST} "${${_NAME_UPPER}_LIBRARY_DIRS}" )
@@ -543,7 +543,7 @@ macro( vista_find_package _PACKAGE_NAME )
 			if( NOT ${_PACKAGE_NAME_UPPER}_FOUND AND ${_PACKAGE_NAME}_FOUND )
 				set( ${_PACKAGE_NAME_UPPER}_FOUND ${${_PACKAGE_NAME}_FOUND} )
 			endif()
-		else( _FIND_VMODULE_EXISTS )
+		else()
 			if( NOT ${PACKAGE_NAME_UPPER}_ADDITIONAL_CONFIG_DIRS )
 				# we look for additional directories to search for the config files
 				# we also search for CoreLibs directories manually
@@ -568,9 +568,17 @@ macro( vista_find_package _PACKAGE_NAME )
 				endif( ${PACKAGE_NAME_UPPER}_ADDITIONAL_CONFIG_DIRS )
 			endif( NOT ${PACKAGE_NAME_UPPER}_ADDITIONAL_CONFIG_DIRS )
 
+			set( ${_PACKAGE_NAME}_ACTUAL_DIR )
+			
 			find_package( ${_PACKAGE_NAME} ${_PACKAGE_VERSION} ${_FIND_PACKAGE_ARGS}
 							PATHS ${${PACKAGE_NAME_UPPER}_ADDITIONAL_CONFIG_DIRS} ${VISTA_PACKAGE_SEARCH_PATHS} )
-		endif( _FIND_VMODULE_EXISTS )
+							
+			# in case we dound a reference file (e.g. in VistaCMakeCommon/share), the Package_DIR would point
+			# to the reference. Instead, we want it to point to the actual file directory
+			if( ${_PACKAGE_NAME}_ACTUAL_DIR )
+				set( ${_PACKAGE_NAME}_DIR "${${_PACKAGE_NAME}_ACTUAL_DIR}" CACHE PATH "The directory containing a CMake configuration file for $_PACKAGE_NAME}" FORCE )
+			endif()
+		endif()
 
 	endif( _DO_FIND )