diff --git a/indra/llrender/llgl.cpp b/indra/llrender/llgl.cpp
index 28a84f5f3df70e072de1daea2105ae70fc6b5c2f..208c300b4462fa886e2948e76ab86f4077fc1dbc 100644
--- a/indra/llrender/llgl.cpp
+++ b/indra/llrender/llgl.cpp
@@ -221,6 +221,14 @@ PFNWGLBLITCONTEXTFRAMEBUFFERAMDPROC             wglBlitContextFramebufferAMD = n
 PFNWGLSWAPINTERVALEXTPROC    wglSwapIntervalEXT = nullptr;
 PFNWGLGETSWAPINTERVALEXTPROC wglGetSwapIntervalEXT = nullptr;
 
+// WGL_NV_DX_interop2
+PFNWGLDXOPENDEVICENVPROC wglDXOpenDeviceNV = nullptr;
+PFNWGLDXCLOSEDEVICENVPROC wglDXCloseDeviceNV = nullptr;
+PFNWGLDXREGISTEROBJECTNVPROC wglDXRegisterObjectNV = nullptr;
+PFNWGLDXUNREGISTEROBJECTNVPROC wglDXUnregisterObjectNV = nullptr;
+PFNWGLDXLOCKOBJECTSNVPROC wglDXLockObjectsNV = nullptr;
+PFNWGLDXUNLOCKOBJECTSNVPROC wglDXUnlockObjectsNV = nullptr;
+
 #endif
 
 #if !LL_SDL
@@ -1465,6 +1473,14 @@ void LLGLManager::initExtensions()
 
     // WGL_ARB_create_context
     wglCreateContextAttribsARB = (PFNWGLCREATECONTEXTATTRIBSARBPROC)GLH_EXT_GET_PROC_ADDRESS("wglCreateContextAttribsARB");
+
+    // WGL_NV_DX_interop2
+     wglDXOpenDeviceNV = (PFNWGLDXOPENDEVICENVPROC)GLH_EXT_GET_PROC_ADDRESS("wglDXOpenDeviceNV");
+     wglDXCloseDeviceNV = (PFNWGLDXCLOSEDEVICENVPROC)GLH_EXT_GET_PROC_ADDRESS("wglDXCloseDeviceNV");
+     wglDXRegisterObjectNV = (PFNWGLDXREGISTEROBJECTNVPROC)GLH_EXT_GET_PROC_ADDRESS("wglDXRegisterObjectNV");
+     wglDXUnregisterObjectNV = (PFNWGLDXUNREGISTEROBJECTNVPROC)GLH_EXT_GET_PROC_ADDRESS("wglDXUnregisterObjectNV");
+     wglDXLockObjectsNV = (PFNWGLDXLOCKOBJECTSNVPROC)GLH_EXT_GET_PROC_ADDRESS("wglDXLockObjectsNV");
+     wglDXUnlockObjectsNV = (PFNWGLDXUNLOCKOBJECTSNVPROC)GLH_EXT_GET_PROC_ADDRESS("wglDXUnlockObjectsNV");
 #endif
 
 
diff --git a/indra/llrender/llglheaders.h b/indra/llrender/llglheaders.h
index 5f199c2a78f6e35ac13034f2c3bdbd8033f302ad..d9467644bcb7670e0acdb23177d6d50dbde90877 100644
--- a/indra/llrender/llglheaders.h
+++ b/indra/llrender/llglheaders.h
@@ -75,6 +75,14 @@ extern PFNWGLGETSWAPINTERVALEXTPROC wglGetSwapIntervalEXT;
 // WGL_ARB_create_context
 extern PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB;
 
+// WGL_NV_DX_interop2
+extern PFNWGLDXOPENDEVICENVPROC wglDXOpenDeviceNV;
+extern PFNWGLDXCLOSEDEVICENVPROC wglDXCloseDeviceNV;
+extern PFNWGLDXREGISTEROBJECTNVPROC wglDXRegisterObjectNV;
+extern PFNWGLDXUNREGISTEROBJECTNVPROC wglDXUnregisterObjectNV;
+extern PFNWGLDXLOCKOBJECTSNVPROC wglDXLockObjectsNV;
+extern PFNWGLDXUNLOCKOBJECTSNVPROC wglDXUnlockObjectsNV;
+
 // GL_VERSION_1_3
 extern PFNGLACTIVETEXTUREPROC               glActiveTexture;
 extern PFNGLSAMPLECOVERAGEPROC              glSampleCoverage;
diff --git a/indra/newview/lltexturectrl.cpp b/indra/newview/lltexturectrl.cpp
index c52e57ec3fc18188ab1c24df430089d8392ab837..f09234d3156f8a9a6320d839f681cc45c8c93dd1 100644
--- a/indra/newview/lltexturectrl.cpp
+++ b/indra/newview/lltexturectrl.cpp
@@ -1138,7 +1138,7 @@ void LLFloaterTexturePicker::onBtnRemove(void* userdata)
 			LLScrollListItem* list_item = *iter;
 			if (list_item)
 			{
-                LLSD data = self->mLocalScrollCtrl->getFirstSelected()->getValue();
+                LLSD data = list_item->getValue();
                 LLUUID tracking_id = data["id"];
                 S32 asset_type = data["type"].asInteger();