diff --git a/MshViewer/Source/Object.cpp b/MshViewer/Source/Object.cpp
index 4d5a5b455f3f6477136f4d0f8ae6574eb56c32e0..316c74beb942b0594ab9a423dca20fba83f5015a 100644
--- a/MshViewer/Source/Object.cpp
+++ b/MshViewer/Source/Object.cpp
@@ -135,9 +135,14 @@ void Object::analyseMsh2Chunks(std::list<ChunkHeader*>& chunkList)
 	{
 		if (!strcmp("MATL", (*it)->name))
 		{
+			// "useless" information how many MATD follow
+			fsMesh.seekg((*it)->position);
+			std::uint32_t tempMatdCount;
+			fsMesh.read(reinterpret_cast<char*>(&tempMatdCount), sizeof(std::uint32_t));
+
 			// get all MATD from MATL list
 			std::list<ChunkHeader*> tempMatlChunks;
-			loadChunks(tempMatlChunks, (*it)->position, (*it)->size);
+			loadChunks(tempMatlChunks, fsMesh.tellg(), (*it)->size - 4);
 
 			// evaluate MATL subchunks
 			for (std::list<ChunkHeader*>::iterator it = tempMatlChunks.begin(); it != tempMatlChunks.end(); it++)
@@ -383,13 +388,13 @@ void Object::analyseSegmChunks(Modl * dataDestination, std::list<ChunkHeader*>&
 			fsMesh.seekg((*it)->position);
 			std::uint32_t tempIndex;
 			fsMesh.read(reinterpret_cast<char*>(&tempIndex), sizeof(tempIndex));
-			if (vTextures.size() < tempIndex - 1)
+			if (vTextures.size() <= tempIndex)
 			{
 				std::cout << "warning texture index <" << tempIndex << "> unknown" << std::endl;
 				dataDestination->texture = "";
 				continue;
 			}
-			dataDestination->texture = vTextures[tempIndex - 1];
+			dataDestination->texture = vTextures[tempIndex];
 			continue;
 		}
 
diff --git a/MshViewer/Source/OpenGlController.cpp b/MshViewer/Source/OpenGlController.cpp
index 2515ba3d618118859aea9051120357f76ef78045..28ace6ed2dfc3933f331b89ed5c059879d90ebf1 100644
--- a/MshViewer/Source/OpenGlController.cpp
+++ b/MshViewer/Source/OpenGlController.cpp
@@ -12,7 +12,7 @@
 
 #define VERTEX_SHADER "Shader/VertexTextureShader.mv2shdr"
 #define FRAGMENT_SHADER "Shader/FragmentTextureShader.mv2shdr"
-#define TEXTURE_NAME "Textures/texture32R.tga"
+//#define TEXTURE_NAME "Textures/texture32R.tga"
 
 /////////////////////////////////////////////////////////////////////////
 // public constructor/destructor
@@ -281,11 +281,13 @@ void OpenGLController::loadMsh(const char * path)
 	gluiSamplerID = glGetUniformLocation(gluiShaderPrgmID, "textureSampler");
 
 	// get data
+	std::list<std::string> listTextures;
 	try
 	{
 		Object obj(path);
 		vfVertices = obj.getVertex();
 		vfUV = obj.getUV();
+		listTextures = obj.getTexture();
 	}
 	catch (std::invalid_argument e)
 	{
@@ -296,15 +298,17 @@ void OpenGLController::loadMsh(const char * path)
 	glGenTextures(1, &gluiTextureID);
 	glBindTexture(GL_TEXTURE_2D, gluiTextureID);
 
-	std::list<std::string> listTextures;
-
-
 	try
 	{
 		if (listTextures.empty())
 			throw std::invalid_argument("no texture names");
 
-		TextureTGA tempTex(listTextures.front().c_str());
+		std::string tempPath = path;
+
+		while (tempPath.back() != '/' && tempPath.back() != '\\')
+			tempPath.pop_back();
+
+		TextureTGA tempTex(std::string(tempPath + listTextures.front()).c_str());
 		glTexImage2D(GL_TEXTURE_2D, 0, tempTex.hasAlpha() ? GL_RGBA : GL_RGB, tempTex.getWidth(), tempTex.getHeight(), 0, tempTex.hasAlpha() ? GL_BGRA : GL_BGR, GL_UNSIGNED_BYTE, tempTex.getData().data());
 	}
 	catch (std::invalid_argument e)
diff --git a/MshViewer/main.cpp b/MshViewer/main.cpp
index bcda1d06c01bfeb28611f46a8cccfd25ba0ec4f9..fb2fff4602be9c9e45d8e6a8ef70f26d69a117e7 100644
--- a/MshViewer/main.cpp
+++ b/MshViewer/main.cpp
@@ -28,7 +28,7 @@ openGL:
 
 	OpenGLController *scene = OpenGLController::getInstance();
 
-	scene->loadMsh("..\\Release\\Msh\\cube.msh");
+	scene->loadMsh("..\\Release\\Msh\\cubeTex.msh");
 
 	do {
 		scene->updateScene();
diff --git a/Release/Msh/cubeTex.msh b/Release/Msh/cubeTex.msh
new file mode 100644
index 0000000000000000000000000000000000000000..c5ebab9a16c691eeb72bf9bd66a3e752a4899786
Binary files /dev/null and b/Release/Msh/cubeTex.msh differ
diff --git a/Release/Textures/texture32R.tga b/Release/Msh/texture32R.tga
similarity index 100%
rename from Release/Textures/texture32R.tga
rename to Release/Msh/texture32R.tga