GUI, camera and render script

I have a problem understanding of GUI implementation, camera and render script.
That’s how my project looks like at the moment:

I have specially created debug boxes, which should be located in different corners of game area.

My render_script:

function init(self)
    self.tile_pred = render.predicate({ "tile" })
    self.gui_pred = render.predicate({ "gui" })
    self.text_pred = render.predicate({ "text" })
    self.particle_pred = render.predicate({ "particle" })

    self.clear_color = vmath.vector4(0, 0, 0, 0)
    self.clear_color.x = sys.get_config("render.clear_color_red", 0)
    self.clear_color.y = sys.get_config("render.clear_color_green", 0)
    self.clear_color.z = sys.get_config("render.clear_color_blue", 0)
    self.clear_color.w = sys.get_config("render.clear_color_alpha", 0)

    self.view = vmath.matrix4()
end

local RESOLUTION = 300

function update(self)
    render.set_depth_mask(true)
    render.clear({ [render.BUFFER_COLOR_BIT] = self.clear_color, [render.BUFFER_DEPTH_BIT] = 1, [render.BUFFER_STENCIL_BIT] = 0 })

    local w = render.get_window_width()
    local h = render.get_window_height()
    local min_size = math.min(w, h)
    local max_size = math.max(w, h)
    local offset = (max_size - min_size) / 2

    render.set_viewport(w > h and offset or 0, w < h and offset or 0, min_size, min_size)
    render.set_view(self.view)

    render.set_depth_mask(false)
    render.disable_state(render.STATE_DEPTH_TEST)
    render.disable_state(render.STATE_STENCIL_TEST)
    render.enable_state(render.STATE_BLEND)
    render.set_blend_func(render.BLEND_SRC_ALPHA, render.BLEND_ONE_MINUS_SRC_ALPHA)
    render.disable_state(render.STATE_CULL_FACE)

    -- camera centered projection
    render.set_projection(vmath.matrix4_orthographic(-RESOLUTION / 2, RESOLUTION / 2, -RESOLUTION / 2, RESOLUTION / 2, -1, 1))

    render.draw(self.tile_pred)
    render.draw(self.particle_pred)
    render.draw_debug3d()

	-- Render the GUI last
    render.set_view(vmath.matrix4())
    render.set_projection(vmath.matrix4_orthographic(0, RESOLUTION, 0, RESOLUTION, -1, 1))

    render.enable_state(render.STATE_STENCIL_TEST)
    render.draw(self.gui_pred)
    render.draw(self.text_pred)
    render.disable_state(render.STATE_STENCIL_TEST)

    render.set_depth_mask(false)
    render.draw_debug2d()
end

function on_message(self, message_id, message)
    if message_id == hash("clear_color") then
        self.clear_color = message.color
    elseif message_id == hash("set_view_projection") then
		self.view = message.view
		self.projection = message.projection
    end
end

Maybe they have different pivots, anchors or adjustment modes?