diff --git a/src/render/OpenGL.cpp b/src/render/OpenGL.cpp index 3cb810e1..e1ecdd2f 100644 --- a/src/render/OpenGL.cpp +++ b/src/render/OpenGL.cpp @@ -1760,6 +1760,16 @@ void CHyprOpenGLImpl::renderTexturePrimitive(SP tex, const CBox& box) glActiveTexture(GL_TEXTURE0); tex->bind(); + // ensure the final blit uses the desired sampling filter + // when cursor zoom is active we want nearest-neighbor (no anti-aliasing) + if (m_renderData.useNearestNeighbor) { + tex->setTexParameter(GL_TEXTURE_MAG_FILTER, GL_NEAREST); + tex->setTexParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST); + } else { + tex->setTexParameter(GL_TEXTURE_MAG_FILTER, GL_LINEAR); + tex->setTexParameter(GL_TEXTURE_MIN_FILTER, GL_LINEAR); + } + useProgram(shader->program); shader->setUniformMatrix3fv(SHADER_PROJ, 1, GL_TRUE, glMatrix.getMatrix()); shader->setUniformInt(SHADER_TEX, 0);