diff --git a/Applications/DataExplorer/VtkVis/VtkMeshSource.cpp b/Applications/DataExplorer/VtkVis/VtkMeshSource.cpp
index fd9aceddf340c42804777d43ea0cc4da730de18c..d41879fb99c05a8aaca3fa68f4de59adfba759cf 100644
--- a/Applications/DataExplorer/VtkVis/VtkMeshSource.cpp
+++ b/Applications/DataExplorer/VtkVis/VtkMeshSource.cpp
@@ -20,6 +20,7 @@
 #include "Elements/Element.h"
 #include "Mesh.h"
 #include "MeshLib/Node.h"
+#include "MeshLib/VtkOGSEnum.h"
 #include "VtkColorLookupTable.h"
 
 #include "Color.h"
@@ -45,8 +46,6 @@
 #include <vtkTriangle.h>
 #include <vtkWedge.h> // == Prism
 
-#include "MeshLib/VtkOGSEnum.h"
-
 vtkStandardNewMacro(VtkMeshSource);
 
 VtkMeshSource::VtkMeshSource() :
@@ -147,12 +146,15 @@ int VtkMeshSource::RequestData( vtkInformation* request,
 			point_ids->SetId(j, elem->getNode(j)->getID());
 
 		type = OGSToVtkCellType(elem->getCellType());
-		if (type==0) {
+		if (type==0)
+		{
 			ERR("VtkMeshSource::RequestData(): Unknown element type \"%s\".",
 					CellType2String(elem->getCellType()).c_str());
 			return 0;
 		}
-		if (elem->getCellType() == CellType::PRISM6) {
+
+		if (elem->getCellType() == CellType::PRISM6)
+		{
 			for (unsigned i=0; i<3; ++i)
 			{
 				const unsigned prism_swap_id = point_ids->GetId(i);
@@ -160,6 +162,24 @@ int VtkMeshSource::RequestData( vtkInformation* request,
 				point_ids->SetId(i+3, prism_swap_id);
 			}
 		}
+		else if (elem->getCellType() == CellType::PRISM15)
+		{
+			std::array<vtkIdType, 15> ogs_nodeIds;
+			for (unsigned i=0; i<15; ++i)
+				ogs_nodeIds[i] = point_ids->GetId(i);
+			for (unsigned i=0; i<3; ++i)
+			{
+				point_ids->SetId(i, ogs_nodeIds[i+3]);
+				point_ids->SetId(i+3, ogs_nodeIds[i]);
+			}
+			for (unsigned i=0; i<3; ++i)
+				point_ids->SetId(6+i, ogs_nodeIds[8-i]);
+			for (unsigned i=0; i<3; ++i)
+				point_ids->SetId(9+i, ogs_nodeIds[14-i]);
+			point_ids->SetId(12, ogs_nodeIds[9]);
+			point_ids->SetId(13, ogs_nodeIds[11]);
+			point_ids->SetId(14, ogs_nodeIds[10]);
+		}
 
 		output->InsertNextCell(type, point_ids);
 	}
diff --git a/InSituLib/VtkMappedMesh.cpp b/InSituLib/VtkMappedMesh.cpp
index 2dcb4d37a2d8139460b510570ddb6dc90bcede61..483ad7e979cfeb08fc4d6b6fd5dc01494e8a010b 100644
--- a/InSituLib/VtkMappedMesh.cpp
+++ b/InSituLib/VtkMappedMesh.cpp
@@ -82,6 +82,24 @@ void VtkMappedMeshImpl::GetCellPoints(vtkIdType cellId, vtkIdList *ptIds)
 			ptIds->SetId(i+3, prism_swap_id);
 		}
 	}
+	else if(GetCellType(cellId) == VTK_QUADRATIC_WEDGE)
+	{
+		std::array<vtkIdType, 15> ogs_nodeIds;
+		for (unsigned i=0; i<15; ++i)
+			ogs_nodeIds[i] = ptIds->GetId(i);
+		for (unsigned i=0; i<3; ++i)
+		{
+			ptIds->SetId(i, ogs_nodeIds[i+3]);
+			ptIds->SetId(i+3, ogs_nodeIds[i]);
+		}
+		for (unsigned i=0; i<3; ++i)
+			ptIds->SetId(6+i, ogs_nodeIds[8-i]);
+		for (unsigned i=0; i<3; ++i)
+			ptIds->SetId(9+i, ogs_nodeIds[14-i]);
+		ptIds->SetId(12, ogs_nodeIds[9]);
+		ptIds->SetId(13, ogs_nodeIds[11]);
+		ptIds->SetId(14, ogs_nodeIds[10]);
+	}
 }
 
 void VtkMappedMeshImpl::GetPointCells(vtkIdType ptId, vtkIdList *cellIds)
diff --git a/MeshLib/MeshGenerators/VtkMeshConverter.cpp b/MeshLib/MeshGenerators/VtkMeshConverter.cpp
index f163ef46260491623a514f2ba8bec54428a7b010..f7735f1da23370b4c3116bb9371ccbfa183e252f 100644
--- a/MeshLib/MeshGenerators/VtkMeshConverter.cpp
+++ b/MeshLib/MeshGenerators/VtkMeshConverter.cpp
@@ -41,7 +41,20 @@
 #include <vtkUnstructuredGrid.h>
 #include <vtkFloatArray.h>
 
-namespace MeshLib {
+namespace MeshLib
+{
+
+namespace detail
+{
+template <class T_ELEMENT>
+MeshLib::Element* createElementWithSameNodeOrder(const std::vector<MeshLib::Node*> &nodes, const std::vector<unsigned> &node_ids, unsigned material)
+{
+	MeshLib::Node** ele_nodes = new MeshLib::Node*[T_ELEMENT::n_all_nodes];
+	for (unsigned k(0); k<T_ELEMENT::n_all_nodes; k++)
+		ele_nodes[k] = nodes[node_ids[k]];
+	return new T_ELEMENT(ele_nodes, material);
+}
+}
 
 MeshLib::Mesh* VtkMeshConverter::convertImgToMesh(vtkImageData* img,
                                                   const double origin[3],
@@ -280,24 +293,15 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid(vtkUnstructuredGrid* gr
 		switch (cell_type)
 		{
 		case VTK_LINE: {
-			MeshLib::Node** line_nodes = new MeshLib::Node*[2];
-			line_nodes[0] = nodes[node_ids[0]];
-			line_nodes[1] = nodes[node_ids[1]];
-			elem = new MeshLib::Line(line_nodes, material);
+			elem = detail::createElementWithSameNodeOrder<MeshLib::Line>(nodes, node_ids, material);
 			break;
 		}
 		case VTK_TRIANGLE: {
-			MeshLib::Node** tri_nodes = new MeshLib::Node*[3];
-			for (unsigned k(0); k<3; k++)
-				tri_nodes[k] = nodes[node_ids[k]];
-			elem = new MeshLib::Tri(tri_nodes, material);
+			elem = detail::createElementWithSameNodeOrder<MeshLib::Tri>(nodes, node_ids, material);
 			break;
 		}
 		case VTK_QUAD: {
-			MeshLib::Node** quad_nodes = new MeshLib::Node*[4];
-			for (unsigned k(0); k<4; k++)
-				quad_nodes[k] = nodes[node_ids[k]];
-			elem = new MeshLib::Quad(quad_nodes, material);
+			elem = detail::createElementWithSameNodeOrder<MeshLib::Quad>(nodes, node_ids, material);
 			break;
 		}
 		case VTK_PIXEL: {
@@ -310,17 +314,11 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid(vtkUnstructuredGrid* gr
 			break;
 		}
 		case VTK_TETRA: {
-			MeshLib::Node** tet_nodes = new MeshLib::Node*[4];
-			for (unsigned k(0); k<4; k++)
-				tet_nodes[k] = nodes[node_ids[k]];
-			elem = new MeshLib::Tet(tet_nodes, material);
+			elem = detail::createElementWithSameNodeOrder<MeshLib::Tet>(nodes, node_ids, material);
 			break;
 		}
 		case VTK_HEXAHEDRON: {
-			MeshLib::Node** hex_nodes = new MeshLib::Node*[8];
-			for (unsigned k(0); k<8; k++)
-				hex_nodes[k] = nodes[node_ids[k]];
-			elem = new MeshLib::Hex(hex_nodes, material);
+			elem = detail::createElementWithSameNodeOrder<MeshLib::Hex>(nodes, node_ids, material);
 			break;
 		}
 		case VTK_VOXEL: {
@@ -337,10 +335,7 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid(vtkUnstructuredGrid* gr
 			break;
 		}
 		case VTK_PYRAMID: {
-			MeshLib::Node** pyramid_nodes = new MeshLib::Node*[5];
-			for (unsigned k(0); k<5; k++)
-				pyramid_nodes[k] = nodes[node_ids[k]];
-			elem = new MeshLib::Pyramid(pyramid_nodes, material);
+			elem = detail::createElementWithSameNodeOrder<MeshLib::Pyramid>(nodes, node_ids, material);
 			break;
 		}
 		case VTK_WEDGE: {
@@ -353,6 +348,51 @@ MeshLib::Mesh* VtkMeshConverter::convertUnstructuredGrid(vtkUnstructuredGrid* gr
 			elem = new MeshLib::Prism(prism_nodes, material);
 			break;
 		}
+		case VTK_QUADRATIC_EDGE: {
+			elem = detail::createElementWithSameNodeOrder<MeshLib::Line3>(nodes, node_ids, material);
+			break;
+		}
+		case VTK_QUADRATIC_TRIANGLE: {
+			elem = detail::createElementWithSameNodeOrder<MeshLib::Tri6>(nodes, node_ids, material);
+			break;
+		}
+		case VTK_QUADRATIC_QUAD: {
+			elem = detail::createElementWithSameNodeOrder<MeshLib::Quad8>(nodes, node_ids, material);
+			break;
+		}
+		case VTK_BIQUADRATIC_QUAD: {
+			elem = detail::createElementWithSameNodeOrder<MeshLib::Quad9>(nodes, node_ids, material);
+			break;
+		}
+		case VTK_QUADRATIC_TETRA: {
+			elem = detail::createElementWithSameNodeOrder<MeshLib::Tet10>(nodes, node_ids, material);
+			break;
+		}
+		case VTK_QUADRATIC_HEXAHEDRON: {
+			elem = detail::createElementWithSameNodeOrder<MeshLib::Hex20>(nodes, node_ids, material);
+			break;
+		}
+		case VTK_QUADRATIC_PYRAMID: {
+			elem = detail::createElementWithSameNodeOrder<MeshLib::Pyramid13>(nodes, node_ids, material);
+			break;
+		}
+		case VTK_QUADRATIC_WEDGE: {
+			MeshLib::Node** prism_nodes = new MeshLib::Node*[15];
+			for (unsigned i=0; i<3; ++i)
+			{
+				prism_nodes[i] = nodes[node_ids[i+3]];
+				prism_nodes[i+3] = nodes[node_ids[i]];
+			}
+			for (unsigned i=0; i<3; ++i)
+				prism_nodes[6+i] = nodes[node_ids[8-i]];
+			prism_nodes[9] = nodes[node_ids[12]];
+			prism_nodes[10] = nodes[node_ids[14]];
+			prism_nodes[11] = nodes[node_ids[13]];
+			for (unsigned i=0; i<3; ++i)
+				prism_nodes[12+i] = nodes[node_ids[11-i]];
+			elem = new MeshLib::Prism15(prism_nodes, material);
+			break;
+		}
 		default:
 			ERR("VtkMeshConverter::convertUnstructuredGrid(): Unknown mesh element type \"%d\".", cell_type);
 			return nullptr;