diff --git a/res/layouts/console.xml b/res/layouts/console.xml
index 3e1b802d..bae396bf 100644
--- a/res/layouts/console.xml
+++ b/res/layouts/console.xml
@@ -14,7 +14,7 @@
diff --git a/src/frontend/hud.cpp b/src/frontend/hud.cpp
index bfaac141..f0bbf20a 100644
--- a/src/frontend/hud.cpp
+++ b/src/frontend/hud.cpp
@@ -615,8 +615,11 @@ void Hud::updateElementsPosition(const Viewport& viewport) {
}
if (secondUI->getPositionFunc() == nullptr) {
secondUI->setPos(glm::vec2(
- glm::min(width/2-invwidth/2, width-caWidth-(inventoryView ? 10 : 0)-invwidth),
- height/2-totalHeight/2
+ glm::min(
+ width / 2.f - invwidth / 2.f,
+ width - caWidth - (inventoryView ? 10 : 0) - invwidth
+ ),
+ height / 2.f - totalHeight / 2.f
));
}
}
diff --git a/src/graphics/core/DrawContext.cpp b/src/graphics/core/DrawContext.cpp
index 29afae2e..314bd7b5 100644
--- a/src/graphics/core/DrawContext.cpp
+++ b/src/graphics/core/DrawContext.cpp
@@ -148,7 +148,7 @@ void DrawContext::setBlendMode(BlendMode mode) {
set_blend_mode(mode);
}
-void DrawContext::setScissors(glm::vec4 area) {
+void DrawContext::setScissors(const glm::vec4& area) {
Window::pushScissor(area);
scissorsCount++;
}
diff --git a/src/graphics/core/DrawContext.hpp b/src/graphics/core/DrawContext.hpp
index 9174be1b..736b053e 100644
--- a/src/graphics/core/DrawContext.hpp
+++ b/src/graphics/core/DrawContext.hpp
@@ -34,6 +34,6 @@ public:
void setDepthTest(bool flag);
void setCullFace(bool flag);
void setBlendMode(BlendMode mode);
- void setScissors(glm::vec4 area);
+ void setScissors(const glm::vec4& area);
void setLineWidth(float width);
};
diff --git a/src/graphics/ui/elements/Container.cpp b/src/graphics/ui/elements/Container.cpp
index 3b8fd0ac..72a44d52 100644
--- a/src/graphics/ui/elements/Container.cpp
+++ b/src/graphics/ui/elements/Container.cpp
@@ -90,7 +90,7 @@ void Container::draw(const DrawContext* pctx, Assets* assets) {
if (!nodes.empty()) {
batch->flush();
DrawContext ctx = pctx->sub();
- ctx.setScissors(glm::vec4(pos.x, pos.y, size.x, size.y));
+ ctx.setScissors(glm::vec4(pos.x, pos.y, glm::ceil(size.x), glm::ceil(size.y)));
for (const auto& node : nodes) {
if (node->isVisible())
node->draw(pctx, assets);
@@ -108,7 +108,7 @@ void Container::drawBackground(const DrawContext* pctx, Assets*) {
auto batch = pctx->getBatch2D();
batch->texture(nullptr);
batch->setColor(color);
- batch->rect(pos.x, pos.y, size.x, size.y);
+ batch->rect(pos.x, pos.y, glm::ceil(size.x), glm::ceil(size.y));
}
void Container::add(const std::shared_ptr &node) {
diff --git a/src/window/Window.cpp b/src/window/Window.cpp
index fdfde141..99a549ca 100644
--- a/src/window/Window.cpp
+++ b/src/window/Window.cpp
@@ -258,14 +258,14 @@ void Window::pushScissor(glm::vec4 area) {
}
scissorStack.push(scissorArea);
- area.z += area.x;
- area.w += area.y;
+ area.z += glm::ceil(area.x);
+ area.w += glm::ceil(area.y);
- area.x = fmax(area.x, scissorArea.x);
- area.y = fmax(area.y, scissorArea.y);
+ area.x = glm::max(area.x, scissorArea.x);
+ area.y = glm::max(area.y, scissorArea.y);
- area.z = fmin(area.z, scissorArea.z);
- area.w = fmin(area.w, scissorArea.w);
+ area.z = glm::min(area.z, scissorArea.z);
+ area.w = glm::min(area.w, scissorArea.w);
if (area.z < 0.0f || area.w < 0.0f) {
glScissor(0, 0, 0, 0);
@@ -273,8 +273,8 @@ void Window::pushScissor(glm::vec4 area) {
glScissor(
area.x,
Window::height - area.w,
- std::max(0, int(area.z - area.x)),
- std::max(0, int(area.w - area.y))
+ std::max(0, static_cast(glm::ceil(area.z - area.x))),
+ std::max(0, static_cast(glm::ceil(area.w - area.y)))
);
}
scissorArea = area;